gdb斷點(diǎn)(在gdb中可以配合shell命令)—斷點(diǎn)設(shè)置 斷點(diǎn)管理—單文件,多文件(c和c++)分類: Linux常用工具 在gdb中使用shell命令的方式是: (gdb) shell command 但是cd是內(nèi)置命令,就不要使用shell了。 gdb原文件的搜索 斷點(diǎn)設(shè)置: 單文件設(shè)置斷點(diǎn): break命令(可以簡(jiǎn)寫為b)可以用來在調(diào)試的程序中設(shè)置斷點(diǎn),該命令有如下四種形式: (gdb) break line-number 使程序恰好在執(zhí)行給定行之前停止。 (gdb) break function-name 使程序恰好在進(jìn)入指定的函數(shù)之前停止。 (gdb) break line-or-function if condition 如果condition(條件)是真,程序到達(dá)指定行或函數(shù)時(shí)停止。 (gdb) break routine-name 在指定例程的入口處設(shè)置斷點(diǎn) C多文件設(shè)置斷點(diǎn): 如果該程序是由很多原文件構(gòu)成的,你可以在各個(gè)原文件中設(shè)置斷點(diǎn),而不是在當(dāng)前的原文件中設(shè)置斷點(diǎn),其方法如下:(該目錄下) (gdb) break filename:line-number 多文件中,在指定文件::指定行,設(shè)置斷點(diǎn) (gdb) break filename:function-name 多文件中,在指定文件::指定函數(shù)處,設(shè)置斷點(diǎn) (在C語(yǔ)言中,不存在域名的問題) 要想設(shè)置一個(gè)條件斷點(diǎn),可以利用break if命令,如下所示: (gdb) break line-or-function if expr 設(shè)置條件斷點(diǎn) 例: (gdb) break 46 if testsize==100 斷點(diǎn)繼續(xù)運(yùn)行:countinue 命令 C++多文件設(shè)置斷點(diǎn): 錯(cuò)誤跨文件設(shè)置斷點(diǎn)方法: 1. 2. b str_parser.cpp:LocalSegment 3. 正確跨文件設(shè)置方法: 1. 2. b str_parser.cpp:1361 (StrParser::LocalSegment所在行) 斷點(diǎn)管理: 顯示當(dāng)前gdb的斷點(diǎn)信息: (gdb) info break 他會(huì)以如下的形式顯示所有的斷點(diǎn)信息: Num Type Disp Enb Address What 1 breakpoint keep y 0x000028bc in init_random at qsort2.c:155 2 breakpoint keep y 0x0000291c in init_organ at qsort2.c:168
刪除指定的某個(gè)斷點(diǎn): (gdb) delete breakpoint 1 該命令將會(huì)刪除編號(hào)為1的斷點(diǎn),如果不帶編號(hào)參數(shù),將刪除所有的斷點(diǎn) (gdb) delete breakpoint
禁止使用某個(gè)斷點(diǎn) (gdb) disable breakpoint 1 該命令將禁止斷點(diǎn) 1,同時(shí)斷點(diǎn)信息的 (Enb)域?qū)⒆優(yōu)?nbsp;n
允許使用某個(gè)斷點(diǎn) (gdb) enable breakpoint 1 該命令將允許斷點(diǎn) 1,同時(shí)斷點(diǎn)信息的 (Enb)域?qū)⒆優(yōu)?nbsp;y
清除原文件中某一代碼行上的所有斷點(diǎn) (gdb)clean number
注:number 為原文件的某個(gè)代碼行的行號(hào) |
|