• <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 - 269,comments - 32,trackbacks - 0

            七、設置顯示選項

                GDB中關于顯示的選項比較多,這里我只例舉大多數常用的選項。

                set print address 
                set print address on 
                    打開地址輸出,當程序顯示函數信息時,GDB會顯出函數的參數地址。系統默認為打開的,如:        
                    (gdb) f
                    #0  set_quotes (lq=0x34c78 "<<", rq=0x34c88 ">>")
                        at input.c:530
                    530         if (lquote != def_lquote)


                set print address off 
                    關閉函數的參數地址顯示,如:       
                    (gdb) set print addr off
                    (gdb) f
                    #0  set_quotes (lq="<<", rq=">>") at input.c:530
                    530         if (lquote != def_lquote)

                show print address 
                    查看當前地址顯示選項是否打開。       
                set print array 
                set print array on 
                    打開數組顯示,打開后當數組顯示時,每個元素占一行,如果不打開的話,每個元素則以逗號分隔。這個選項默認是關閉的。與之相關的兩個命令如下,我就不再多說了。     
                set print array off 
                show print array

                set print elements <number-of-elements>
                    這個選項主要是設置數組的,如果你的數組太大了,那么就可以指定一個<number-of-elements>來指定數據顯示的最大長度,當到達這個長度時,GDB就不再往下顯示了。如果設置為0,則表示不限制。        
                show print elements 
                    查看print elements的選項信息。        
                set print null-stop <on/off>
                    如果打開了這個選項,那么當顯示字符串時,遇到結束符則停止顯示。這個選項默認為off。  
                set print pretty on 
                    如果打開printf pretty這個選項,那么當GDB顯示結構體時會比較漂亮。如:

                        $1 = {
                          next = 0x0,
                          flags = {
                            sweet = 1,
                            sour = 1
                          },
                          meat = 0x54 "Pork"
                        }

                set print pretty off
                    關閉printf pretty這個選項,GDB顯示結構體時會如下顯示:      
                        $1 = {next = 0x0, flags = {sweet = 1, sour = 1}, meat = 0x54 "Pork"}        
                show print pretty 
                    查看GDB是如何顯示結構體的。        
                set print sevenbit-strings <on/off>
                    設置字符顯示,是否按“/nnn”的格式顯示,如果打開,則字符串或字符數據按/nnn顯示,如“/065”。   
                show print sevenbit-strings
                    查看字符顯示開關是否打開。         
                set print union <on/off>
                    設置顯示結構體時,是否顯式其內的聯合體數據。例如有以下數據結構:       
                    typedef enum {Tree, Bug} Species;
                    typedef enum {Big_tree, Acorn, Seedling} Tree_forms;
                    typedef enum {Caterpillar, Cocoon, Butterfly}
                                  Bug_forms;
                    
                    struct thing {
                      Species it;
                      union {
                        Tree_forms tree;
                        Bug_forms bug;
                      } form;
                    };
                    
                    struct thing foo = {Tree, {Acorn}};

                    當打開這個開關時,執行 p foo 命令后,會如下顯示:
                        $1 = {it = Tree, form = {tree = Acorn, bug = Cocoon}}
                    
                    當關閉這個開關時,執行 p foo 命令后,會如下顯示:
                        $1 = {it = Tree, form = {...}}

                show print union
                    查看聯合體數據的顯示方式   
                set print object <on/off>
                    在C++中,如果一個對象指針指向其派生類,如果打開這個選項,GDB會自動按照虛方法調用的規則顯示輸出,如果關閉這個選項的話,GDB就不管虛函數表了。這個選項默認是off。
                show print object
                    查看對象選項的設置。     
                set print static-members <on/off>
                    這個選項表示,當顯示一個C++對象中的內容是,是否顯示其中的靜態數據成員。默認是on。   
                show print static-members
                    查看靜態數據成員選項設置。        
                set print vtbl <on/off>
                    當此選項打開時,GDB將用比較規整的格式來顯示虛函數表時。其默認是關閉的。       
                show print vtbl
                    查看虛函數顯示格式的選項。        
            八、歷史記錄

                當你用GDB的print查看程序運行時的數據時,你每一個print都會被GDB記錄下來。GDB會以$1, $2, $3 .....這樣的方式為你每一個print命令編上號。于是,你可以使用這個編號訪問以前的表達式,如$1。這個功能所帶來的好處是,如果你先前輸入了一個比較長的表達式,如果你還想查看這個表達式的值,你可以使用歷史記錄來訪問,省去了重復輸入。
            九、GDB環境變量

                你可以在GDB的調試環境中定義自己的變量,用來保存一些調試程序中的運行數據。要定義一個GDB的變量很簡單只需。使用GDB的set命令。GDB的環境變量和UNIX一樣,也是以$起頭。如:  
                set $foo = *object_ptr 
                使用環境變量時,GDB會在你第一次使用時創建這個變量,而在以后的使用中,則直接對其賦值。環境變量沒有類型,你可以給環境變量定義任一的類型。包括結構體和數組。   
                show convenience 
                    該命令查看當前所設置的所有的環境變量。
                    
                這是一個比較強大的功能,環境變量和程序變量的交互使用,將使得程序調試更為靈活便捷。例如:   
                    set $i = 0
                    print bar[$i++]->contents   
                于是,當你就不必,print bar[0]->contents, print bar[1]->contents地輸入命令了。輸入這樣的命令后,只用敲回車,重復執行上一條語句,環境變量會自動累加,從而完成逐個輸出的功能。     
            十、查看寄存器

                要查看寄存器的值,很簡單,可以使用如下命令:  
                info registers 
                    查看寄存器的情況。(除了浮點寄存器)    
                info all-registers
                    查看所有寄存器的情況。(包括浮點寄存器)   
                info registers <regname ...>
                    查看所指定的寄存器的情況。       
                寄存器中放置了程序運行時的數據,比如程序當前運行的指令地址(ip),程序的當前堆棧地址(sp)等等。你同樣可以使用print命令來訪問寄存器的情況,只需要在寄存器名字前加一個$符號就可以了。如:p $eip。

            本文轉自:http://blog.csdn.net/haoel/article/details/2884

            posted on 2013-11-28 12:18 王海光 閱讀(431) 評論(0)  編輯 收藏 引用 所屬分類: Linux
            久久久久久亚洲精品成人| 狠狠色丁香久久综合五月| 激情五月综合综合久久69| 成人午夜精品久久久久久久小说| 久久午夜羞羞影院免费观看| 久久精品欧美日韩精品| 久久精品国产欧美日韩| 一本色道久久综合狠狠躁| 久久精品嫩草影院| 久久亚洲AV成人无码| 久久ww精品w免费人成| 亚洲欧美日韩久久精品| 久久精品这里热有精品| 久久久久波多野结衣高潮| 久久99精品久久久久久| 亚洲女久久久噜噜噜熟女| 国产日韩欧美久久| 成人资源影音先锋久久资源网| 亚洲伊人久久成综合人影院| 2021久久国自产拍精品| 久久综合亚洲鲁鲁五月天| 久久精品国产99久久久香蕉| www.久久99| 久久久一本精品99久久精品66| 国产精品一区二区久久精品涩爱| 成人国内精品久久久久影院VR| 久久ww精品w免费人成| 亚洲精品乱码久久久久久中文字幕| 香蕉99久久国产综合精品宅男自 | 武侠古典久久婷婷狼人伊人| 99久久久精品免费观看国产| 欧美日韩精品久久久久| 亚洲欧美另类日本久久国产真实乱对白| 国产午夜电影久久| 国产69精品久久久久777| 久久久久久国产精品免费无码| 久久精品国产亚洲AV蜜臀色欲| 精品久久亚洲中文无码| 国产aⅴ激情无码久久| 伊人久久精品无码二区麻豆| 亚洲日韩中文无码久久|