国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

linux中gdb的入門使用教程

2024-08-28 00:03:11
字體:
來源:轉載
供稿:網友

前言

gdb是linux下非常好用的一個調試工具,雖然它是命令行模式的調試工具,但是它的功能強大到你無法想象,這里簡單介紹下gdb的使用方法,需要的朋友們下面來一起看看詳細的介紹吧。

斷點

在代碼的指定位置中斷,使程序在此中斷。

break <function> 在進入指定函數時停住 break <linenum> 在指定行號停住。 break +/-offset 在當前行號的前面或后面的offset行停住。offiset為自然數。 break filename:linenum 在源文件filename的linenum行處停住。 break ... if <condition> ...可以是上述的參數,condition表示條件,在條件成立時停住。比如在循環境體中,可以設置break if i=100,表示當i為100時停住程序。

案例:

(gdb) break sc_smartcontract_handler.cpp:45Breakpoint 4 at 0x424d42: file sc_smartcontract_handler.cpp, line 45.

對斷點的相關操作

delete 刪除所有斷點 delete breakpoint [n] 刪除某個斷點 disable breakpoint [n] 禁用某個斷點 enable breakpoint [n] 使能某個斷點 info breakpoints [n] 查看當前斷點信息

觀察點

捕捉點用來補捉程序運行時的一些事件。如:載入共享庫(動態鏈接庫)、C++的異常等。通常也是用來定位bug。

捕捉點的命令格式是:catch <event>,event可以是下面的內容

watch <expr> 變量發生變化時中斷 rwatch <expr> 變量被讀時中斷 awatch <expr> 變量值被讀或被寫時中斷

可以通過info watchpoints [n]命令查看當前觀察點信息

查看變量

最常用的查看變量的方法是

 (gdb) print {變量名}

(gdb) print argc$1 = 1

如果打印數組,由于默認的設置,可能打印的數組尾部部分沒有顯示,可以通過如下的命令設置打印數組的最大長度

(gdb) set print elements 300

調試中查看代碼

list function 如list main:顯示main函數附近的代碼 list file:function 如list main.c:main:顯示main.c中的main函數附近的代碼 list n1,n2 如list 10,20,顯示當前文件的10到20行

雖然list已經很方便了, 但還是不盡人意. 如果能夠在運行的同時顯示代碼就好了, 答案是肯定的.

使用如下命令啟動gdb: gdb -tui 項目名 或者在啟動gdb后, 輸入命令focus,如圖:

恢復程序運行和單步調試

在gdb中,和調試步進相關的命令主要有如下幾條:

continue 繼續運行程序直到下一個斷點(類似于VS里的F5) next 逐過程步進,不會進入子函數(類似VS里的F10) setp 逐語句步進,會進入子函數(類似VS里的F11) until 運行至當前語句塊結束 finish 運行至函數結束并跳出,并打印函數的返回值(類似VS的Shift+F11)

在特定線程中中斷

你可以定義你的斷點是否在所有的線程上,或是在某個特定的線程。GDB很容易幫你完成這一工作。

break <linespec> thread <threadno> break <linespec> thread <threadno> if ...

linespec指定了斷點設置在的源程序的行號。threadno指定了線程的ID,注意,這個ID是GDB分配的,你可以通過"info threads"命令來查看正在運行程序中的線程信息。如果你不指定thread <threadno>則表示你的斷點設在所有線程上面。你還可以為某線程指定斷點條件。如:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 沁源县| 诏安县| 奉节县| 沙雅县| 韶山市| 瓮安县| 红河县| 武清区| 钟山县| 鹤岗市| 类乌齐县| 老河口市| 深州市| 文安县| 平武县| 泽普县| 攀枝花市| 洛扎县| 兖州市| 自贡市| 安义县| 三门峡市| 遂平县| 霸州市| 怀安县| 乐业县| 江阴市| 桐柏县| 天等县| 丁青县| 东乌| 天台县| 崇仁县| 合川市| 灵川县| 仙居县| 泸溪县| 临漳县| 内乡县| 依兰县| 九江市|