麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 服務器 > Linux服務器 > 正文

Linux調試工具GDB使用簡易教程

2024-09-05 23:04:33
字體:
來源:轉載
供稿:網友

本文所述主要是Linux調試工具GDB的使用教程,具體如下。

聲明:本博客內容是由本人經過實驗樓教程整理得來。

GDB的相關概念

GDB, 是 The GNU Project Debugger 的縮寫, 是 Linux 下功能全面的調試工具。GDB 支持斷點、單步執行、打印變量、觀察變量、查看寄存器、查看堆棧等調試手段。在 Linux 環境軟件開發中,GDB 是主要的調試工具,用來調試 C 和 C++ 程序。

GDB的相關操作

下面給出一個具有buging.c的程序:

[yqtao@localhost linux/198892.html">linux]$ cat buging.c #include <stdio.h>int getSum(int n) {    int sum=0,i;    for (i=1;i<=n;i++)        sum+=i;    return sum;}int main(){    int res=getSum(100);    printf("1+2+...+100=%d/n",res);}

如果要調試程序,則在進行gcc編譯的時候要加上-g參數

gcc -g -o bugging bugging.c

進入gdb:

gdb buging

部分gdb命令:

linux,gdb調試工具,gdb使用,如何使用gdb,ubuntu,gdb調試

// 查看源碼// 查看第幾行附近// 可簡寫成l 2(gdb) list 2   1    #include <stdio.h>2    int getSum(int n) {3        int sum=0,i;4        for (i=1;i<=n;i++)5            sum+=i;6        return sum;7    }// 查看main函數附近的源碼(gdb) list main3        int sum=0,i;4        for (i=1;i<=n;i++)5            sum+=i;6        return sum;7    }8    int main(){9        int res=getSum(100);10       printf("1+2+...+100=%d/n",res);11   }// 設置斷點// break +n在第幾行設斷點(gdb) break 8Breakpoint 1 at 0x4004fa: file buging.c, line 8.// break +函數名 ,在函數名處設斷點(gdb) break getSumBreakpoint 2 at 0x4004cb: file buging.c, line 3.//查看斷點信息(gdb) info breakpoints Num   Type      Disp Enb Address      What1    breakpoint   keep y  0x00000000004004fa in main at buging.c:82    breakpoint   keep y  0x00000000004004cb in getSum at buging.c:3

斷點信息中每一項的信息:

1.Num 列代表斷點編號,該編號可以作為 delete/enalbe/disable 等控制斷點命令的參數
2.Type 列代表斷點類型,一般為 breakpoint
3.Disp 列代表斷點被命中后,該斷點保留(keep)、刪除(del)還是關閉(dis)
4.Enb 列代表該斷點是 enable(y) 還是 disable(n)
5.Address 列代表該斷點處虛擬內存的地址
6.What 列代表該斷點在源文件中的信息

// 刪除斷點// delete +n 或 d +n// 如果不加數字則刪除全部的斷點(gdb) d 2(gdb) info breakpoints Num   Type      Disp Enb Address      What1    breakpoint   keep y  0x00000000004004fa in main at buging.c:8

關閉和啟用斷點:

有時候,我們會遇到這種情況:有些斷點可能暫時不用但又不想刪除,那么可以disable.

disable +n //關閉斷點enable +n  //啟動斷點

GDB單步調試

以本文開頭的buging.c文件為例,進行單步調試。

// 進入gdb[yqtao@localhost linux]$ gdb buging// 在main()函數處設斷點(gdb) info breakpoints // 運行程序(gdb) runBreakpoint 1, main () at buging.c:99        int res=getSum(100);

注意:我們要進入函數要是用step(s),而單步執行next(n),next是不進入函數內部的,要區分兩者的關系。

(gdb) stepgetSum (n=100) at buging.c:44        for (i=1;i<=n;i++)// 查看代碼(gdb) l1    #include <stdio.h>2    int getSum(int n) {3        int sum=0,i;4        for (i=1;i<=n;i++)5            sum+=i;6        return sum;7    }8    int main(){9        int res=getSum(100);10       printf("1+2+...+100=%d/n",res);// 下一步(gdb) s5            sum+=i;// 打印sum的值// 看到sum是為賦初值的(gdb) p sum$1 = 4195633// info locals//打印當前斷點處所在函數的所有局部變量的值,不包括函數參數。(gdb) info localssum = 4195635i = 3

其余的一些命令:

finish

執行程序到當前函數結束

continue

執行程序到下個斷點

until

until N,執行程序到源代碼的某一行

總結

以上就是本文關于Linux調試工具GDB使用簡易教程的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 日本在线免费观看 | 免费毛片视频播放 | 国产做爰全免费的视频黑人 | 欧美www| 久久美女免费视频 | 国产精品久久久久久久久粉嫩 | 在线观看中文字幕国产 | 国产午夜精品在线 | chinesehd天美原创xxxx | 成年免费大片黄在线观看岛国 | www.成人在线 | 深夜视频福利 | 黄色片视频观看 | 久久精品9 | 91精品国产福利尤物免费 | 日本最新免费二区三区 | 精品国产一区二区三区成人影院 | 日本在线高清 | 成人做爰s片免费看网站 | 一区国产视频 | 成人在线视频一区 | 免费观看黄色影片 | 干色视频 | 欧美黑人伦理 | 久久精品国产99久久6动漫亮点 | 久久国产精品二国产精品中国洋人 | 久久久免费观看完整版 | 欧美女人天堂 | 欧美日韩色 | julieann艳星激情办公室 | 午夜小影院 | 美女污污视频在线观看 | 成人免费网视频 | 色网在线视频 | 欧美hdfree性xxxx| 欧美日韩一 | 国产精品久久久久久久久岛 | 中国国语毛片免费观看视频 | 一区二区三区日韩电影 | 久国产精品视频 | 亚洲最大中文字幕 |