• <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

            查看棧信息

            當程序被停住了,你需要做的第一件事就是查看程序是在哪里停住的。當你的程序調用了一個函數,函數的地址,函數參數,函數內的局部變量都會被壓入“棧”(Stack)中。你可以用GDB命令來查看當前的棧中的信息。

            下面是一些查看函數調用棧信息的GDB命令:

                Backtracebt 打印當前的函數調用棧的所有信息。如:       
                    (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
                   
            從上可以看出函數的調用棧信息:__libc_start_main --> main() --> func()   
                backtrace <n>
            bt <n> n是一個正整數,表示只打印棧頂上n層的棧信息。

                backtrace <-n> bt <-n> -n表一個負整數,表示只打印棧底下n層的棧信息。       
            如果你要查看某一層的信息,你需要在切換當前的棧,一般來說,程序停止時,最頂層的棧就是當前棧,如果你要查看棧下面層的詳細信息,首先要做的是切換當前棧。

            frame <n>f <n> n是一個從0開始的整數,是棧中的層編號。比如:frame 0,表示棧頂,frame 1,表示棧的第二層。
               up <n>        
            表示向棧的上面移動n層,可以不打n,表示向上移動一層。

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

            上面的命令,都會打印出移動到的棧層的信息。如果你不想讓其打出信息。你可以使用這三個命令:

                 select-frame <n> 對應于 frame 命令。
                  up-silently <n>
            對應于 up 命令。
                  down-silently <n>
            對應于 down 命令。

            查看當前棧層的信息,你可以用以下GDB命令:

            frame f       會打印出這些信息:棧的層編號,當前的函數名,函數參數值,函數所在文件及行號,函數執行到的語句。

            info frameinfo f 這個命令會打印出更為詳細的當前棧層的信息,只不過,大多數都是運行時的內內地址。比如:函數地址,調用函數的地址,被調用函數的地址,目前的函數是由什么樣的程序語言寫成的、函數參數地址及值、局部變量的地址等等。如:
                       (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     
            打印出當前函數的參數名及其值。    
                 info locals    
            打印出當前函數中所有局部變量及其值。       
                 info catch     
            打印出當前的函數中的異常處理信息。
            posted on 2008-12-09 21:06 。。。。 閱讀(1817) 評論(0)  編輯 收藏 引用 所屬分類: c++c++ 編譯 調試 開發環境
            精品久久久久久中文字幕人妻最新| 久久精品国产半推半就| 欧美777精品久久久久网| 久久久久久亚洲Av无码精品专口| 亚洲国产天堂久久久久久| 久久久精品视频免费观看| 欧美精品一本久久男人的天堂| 国产成人久久精品激情| 韩国免费A级毛片久久| 日本一区精品久久久久影院| 潮喷大喷水系列无码久久精品| 欧洲成人午夜精品无码区久久| 人妻无码αv中文字幕久久琪琪布 人妻无码久久一区二区三区免费 人妻无码中文久久久久专区 | 久久久婷婷五月亚洲97号色| 欧美一区二区久久精品| 亚洲精品无码久久千人斩| 欧美日韩精品久久久免费观看| 一本大道久久香蕉成人网| 久久精品国产乱子伦| 久久综合国产乱子伦精品免费| 波多野结衣中文字幕久久| 精品人妻伦一二三区久久| 国产成年无码久久久免费| 久久亚洲日韩精品一区二区三区| 亚洲国产精品婷婷久久| 中文字幕无码av激情不卡久久| 色妞色综合久久夜夜| 精品国产乱码久久久久久1区2区 | 日本欧美国产精品第一页久久| 人妻系列无码专区久久五月天| 中文字幕亚洲综合久久菠萝蜜| 国产成人无码久久久精品一| 久久免费视频6| 色综合久久无码中文字幕| 9191精品国产免费久久| 一级做a爰片久久毛片免费陪| 精品无码久久久久久尤物| 亚洲国产精品综合久久网络| 日本人妻丰满熟妇久久久久久| 久久亚洲欧洲国产综合| 精品一区二区久久|