Linux GDB調試--啟動程序進程調試:GDB 程序名


linux GDB調試--啟動程序進行調試:GDB 程序名

linux GDB調試--對正在運行的程序進行調試:啟動GDB后,attach 進程ID

linux GDB調試--對Coredumped文件進行調試:GDB 程序名 Coredumped文件名

調試准備

1、簡單的累加

 1 #include <stdio.h>
 2 
 3 int main (void)
 4 {
 5     int count = 0;
 6     int i;
 7     for ( i = 0; i < 10; i++){
 8         count += i;
 9     }
10     printf("count = %d \n", count);
11     return 0;
12 }

2、makefile

1 cc = gcc
2 target = main
3 obj = add.o
4 $(target):$(obj)
5     $(cc) -g $(obj) -Wall -o $(target) -lpthread -lrt
6 add.o : add.c
7     $(cc) -c add.c -g -lpthread
8 .PHONY:clean
9     $(RM) *.o $(target)

注意:Makefile中只能出現tab開頭,不能是四個空格,GDB調試編譯必須帶 -g 。

3、編譯過程

調試過程

1、進入gdb調試

     gdb 編譯生成的可執行文件

    

2、查看代碼

     list或者l(l 等價於 list)

    直接回車表示執行上一條命令

    

3、設置斷點

    a.直接根據函數名設置斷點

        如break main或b mian (b 等價於 break)

    b.根據行數設置斷點

        如b 8

    c.根據文件名和行數設置斷點

        如 break add.c:8 在add.c中第8行設置斷點

    查看斷點 info breakpoint 或 i b(i 等價於info)

    

4、開始 

    開始執行

        start命令

    

    一步步執行:

        next或n(n等價於next)

       后可直接回車

        

    打印參數值

        print count

        

       前面表示打印次數

    p/[] 變量

    x 按十六進制格式顯示變量。
    d 按十進制格式顯示變量。
    u 按十六進制格式顯示無符號整型。
    o 按八進制格式顯示變量。
    t 按二進制格式顯示變量。
    a 按十六進制格式顯示變量。
    c 按字符格式顯示變量。
    f 按浮點數格式顯示變量。

    查看內存

        查看變量地址和值

        

       查看內存

        x/<n/f/u> <addr>

        

        

     查看機器碼

         display/i $pc
         $pc是GDB的環境變量,表示着指令的地址,/i則表示輸出格式為機器指令碼。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM