• <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>
            隨筆-19  評論-21  文章-0  trackbacks-0

            經常使用這些工具,有那么些功能卻不常用,也不知道。

            1. gdb

            a.  .gdbinit

            gdb運行時會首先加載 ~/.gdbinit文件

            例如:我在debug時,每次都需要進行handle SIGBUS noprint pass來處理SIGBUS信號,這種情況就可以把它寫入 .gdbinit文件。

            在.gdbinit里也可以定義函

              eg:  在.gdbinit里定義print_regs
                 def print_regs
                    i r eax ebx ecx edx
                 end

              (gdb) print_regs
              eax            0xbffff4a4    -1073744732
              ebx            0x28bff4    2670580
              ecx            0x902c5562    -1876142750
              edx            0x1    1

            b. 在GDB中,可以使用命令up或down在棧中移動!上下移動棧,查詢變量和內存的值。這個有什么好處呢?

            看看如下的例子就知道了

            test0(a){
                int m = GetNumber();
                test1(b);
            }
            test1(b){
                test3(c);
            }
            

            執行到test3(c)的時候,如果你想看看test0中的變量m的值是多少,怎么辦?這時就可以使用up了,up到test0的棧時就可以直接print m的值了。很方便!

            c. 設置臨時斷點 tbreak

            d. 如果watch變量不好用,可以watch它的地址

            e. return 和jump命令

              return <expr> :return 從函數退出,跳過剩下的語句。

              jump :跳過或重新執行當前函數中的語句。

            f. shared library

            可以顯示哪些DLL已經載入,并且為尚未載入調試信息的DLL載入調試信息

            g. 按下Ctrl + C,只是暫停程序,程序還可以繼續運行。

            h. 注意設置條件斷點有可能會影響執行速度。

            如果需要在某條執行特別頻繁的語句上設置條件斷點,則比較好的方法是在代碼中直接插入源代碼做判斷,這樣速度更快。

            2.  strace

            在進行以下高度時可以考慮使用strace:

            a. 查明哪些文件被打開了

            b. 在OS全程中未捕獲的錯誤或中斷。用strace查找返回的錯誤值,并再次核對源代碼 是否處理了這些值

            c. 調試性能問題,看OS調用的頻率

            d. 查看內存分配、釋放、映射的情況。

            3. gcc

            gcc -E 可以觀察預處理器的輸出。這樣,宏出錯時可以看看為什么。

            4. 設置LD_DEBUGS有點用


            $ export LD_DEBUG=libs
            $ ./a.out
                  1715:    find library=libc.so.6 [0]; searching
                  1715:     search cache=/etc/ld.so.cache
                  1715:      trying file=/lib/i386-linux-gnu/libc.so.6
                  1715:   
                  1715:   
                  1715:    calling init: /lib/i386-linux-gnu/libc.so.6
                  1715:   
                  1715:   
                  1715:    initialize program: ./a.out
                  1715:   
                  1715:   
                  1715:    transferring control: ./a.out
                  1715:   
            hello
                  1715:   
                  1715:    calling fini: ./a.out [0]
                  1715:   
                  1715:   
                  1715:    calling fini: /lib/i386-linux-gnu/libc.so.6 [0]
                  1715:   
            $ export LD_DEBUG=help
            $ ./a.out
            Valid options for the LD_DEBUG environment variable are:

              libs        display library search paths
              reloc       display relocation processing
              files       display progress for input file
              symbols     display symbol table processing
              bindings    display information about symbol binding
              versions    display version dependencies
              all         all previous options combined
              statistics  display relocation statistics
              unused      determined unused DSOs
              help        display this help message and exit

            To direct the debugging output into a file instead of standard output
            a filename can be specified using the LD_DEBUG_OUTPUT environment variable.

            posted on 2011-05-17 21:14 hex108 閱讀(2652) 評論(3)  編輯 收藏 引用 所屬分類: Program

            評論:
            # You?ve got it in one. Cuodln?t have put it better. 2011-05-25 21:10 | Bubber
            You?ve got it in one. Cuodln?t have put it better.  回復  更多評論
              
            # re: gdb,strace那些不常用的功能 2011-05-26 09:48 | hex108
            @Bubber
            They're short,so I put them together.  回復  更多評論
              
            超级碰碰碰碰97久久久久| 久久综合丁香激情久久| 久久久综合香蕉尹人综合网| 精品久久人人做人人爽综合| 久久久久久久97| 99久久国语露脸精品国产| 精品多毛少妇人妻AV免费久久| 亚洲性久久久影院| 国产精品久久久久aaaa| 亚洲国产小视频精品久久久三级 | 久久99热只有频精品8| 91性高湖久久久久| 久久伊人精品一区二区三区| 久久99精品国产麻豆宅宅| 亚洲精品NV久久久久久久久久| 国产精品美女久久久| 久久天天躁狠狠躁夜夜2020一| 日韩亚洲欧美久久久www综合网 | 久久久99精品成人片中文字幕| 亚洲精品乱码久久久久久蜜桃不卡| 色噜噜狠狠先锋影音久久| 伊人久久大香线蕉综合影院首页| 久久www免费人成精品香蕉| 午夜人妻久久久久久久久| 亚洲国产精品无码久久九九| 久久精品国产精品青草app| 三上悠亚久久精品| 久久精品国产亚洲AV蜜臀色欲 | 久久久高清免费视频| 狠狠色丁香婷婷综合久久来来去 | 91久久九九无码成人网站| 色欲综合久久中文字幕网| 久久午夜免费视频| 久久综合色区| 亚洲国产精品成人久久蜜臀| 久久久久九国产精品| 久久精品国产精品亚洲| 国产亚洲精久久久久久无码AV| 国产精品免费久久久久久久久| 色综合久久久久网| 久久久精品人妻无码专区不卡|