• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            posts - 17,comments - 7,trackbacks - 0

            查看棧信息

            當(dāng)程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。當(dāng)你的程序調(diào)用了一個(gè)函數(shù),函數(shù)的地址,函數(shù)參數(shù),函數(shù)內(nèi)的局部變量都會(huì)被壓入“棧”(Stack)中。你可以用GDB命令來(lái)查看當(dāng)前的棧中的信息。

            下面是一些查看函數(shù)調(diào)用棧信息的GDB命令:

                Backtracebt 打印當(dāng)前的函數(shù)調(diào)用棧的所有信息。如:       
                    (gdb) bt
                    #0 func (n=250) at tst.c:6
                    #1 0x08048524 in main (argc=1, argv=0xbffff674) at tst.c:30
                    #2 0x400409ed in __libc_start_main () from /lib/libc.so.6
                   
            從上可以看出函數(shù)的調(diào)用棧信息:__libc_start_main --> main() --> func()   
                backtrace <n>
            bt <n> n是一個(gè)正整數(shù),表示只打印棧頂上n層的棧信息。

                backtrace <-n> bt <-n> -n表一個(gè)負(fù)整數(shù),表示只打印棧底下n層的棧信息。       
            如果你要查看某一層的信息,你需要在切換當(dāng)前的棧,一般來(lái)說(shuō),程序停止時(shí),最頂層的棧就是當(dāng)前棧,如果你要查看棧下面層的詳細(xì)信息,首先要做的是切換當(dāng)前棧。

            frame <n>f <n> n是一個(gè)從0開(kāi)始的整數(shù),是棧中的層編號(hào)。比如:frame 0,表示棧頂,frame 1,表示棧的第二層。
               up <n>        
            表示向棧的上面移動(dòng)n層,可以不打n,表示向上移動(dòng)一層。

            down <n> 表示向棧的下面移動(dòng)n層,可以不打n,表示向下移動(dòng)一層。

            上面的命令,都會(huì)打印出移動(dòng)到的棧層的信息。如果你不想讓其打出信息。你可以使用這三個(gè)命令:

                 select-frame <n> 對(duì)應(yīng)于 frame 命令。
                  up-silently <n>
            對(duì)應(yīng)于 up 命令。
                  down-silently <n>
            對(duì)應(yīng)于 down 命令。

            查看當(dāng)前棧層的信息,你可以用以下GDB命令:

            frame f       會(huì)打印出這些信息:棧的層編號(hào),當(dāng)前的函數(shù)名,函數(shù)參數(shù)值,函數(shù)所在文件及行號(hào),函數(shù)執(zhí)行到的語(yǔ)句。

            info frameinfo f 這個(gè)命令會(huì)打印出更為詳細(xì)的當(dāng)前棧層的信息,只不過(guò),大多數(shù)都是運(yùn)行時(shí)的內(nèi)內(nèi)地址。比如:函數(shù)地址,調(diào)用函數(shù)的地址,被調(diào)用函數(shù)的地址,目前的函數(shù)是由什么樣的程序語(yǔ)言寫成的、函數(shù)參數(shù)地址及值、局部變量的地址等等。如:
                       (gdb) info f
                       Stack level 0, frame at 0xbffff5d4:
                         eip = 0x804845d in func (tst.c:6); saved eip 0x8048524
                         called by frame at 0xbffff60c
                         source language c.
                         Arglist at 0xbffff5d4, args: n=250
                         Locals at 0xbffff5d4, Previous frame's sp is 0x0
                         Saved registers:
                         ebp at 0xbffff5d4, eip at 0xbffff5d8
                         
                 info args     
            打印出當(dāng)前函數(shù)的參數(shù)名及其值。    
                 info locals    
            打印出當(dāng)前函數(shù)中所有局部變量及其值。       
                 info catch     
            打印出當(dāng)前的函數(shù)中的異常處理信息。
            久久露脸国产精品| 久久精品草草草| 久久精品免费一区二区| 欧美亚洲色综久久精品国产| 超级碰久久免费公开视频| 亚洲国产精品成人久久蜜臀 | 国产99久久久久久免费看| 四虎亚洲国产成人久久精品| 日本强好片久久久久久AAA| 99久久精品免费看国产一区二区三区| 国产精品免费看久久久香蕉| 一本色道久久99一综合| 久久久久亚洲AV无码专区桃色| 国内精品综合久久久40p| 国产成人精品久久亚洲| 久久精品无码一区二区无码| 中文国产成人精品久久亚洲精品AⅤ无码精品 | 久久免费视频一区| 色综合久久精品中文字幕首页| 亚洲精品国精品久久99热| 久久精品九九亚洲精品天堂| 久久精品国产亚洲AV电影| 日批日出水久久亚洲精品tv| 国产成人综合久久久久久| 国产精品青草久久久久婷婷| 久久国产精品无码一区二区三区 | 91久久香蕉国产熟女线看| 久久午夜无码鲁丝片| 狠狠综合久久综合88亚洲| 亚洲第一永久AV网站久久精品男人的天堂AV| 国内精品人妻无码久久久影院| 日产精品99久久久久久| 日韩AV无码久久一区二区| 成人久久免费网站| AV无码久久久久不卡蜜桃| 无码国内精品久久人妻| 亚洲伊人久久大香线蕉综合图片| 久久精品国产亚洲av麻豆图片 | 国产精品久久久久AV福利动漫| 久久精品国产亚洲AV嫖农村妇女| 色8久久人人97超碰香蕉987|