gdb 使用技巧

原文鏈接: http://blog.csdn.net/zhangmiaoping23/article/details/41009053


條件斷點


設置一個條件斷點,條件由cond指定;在gdb每次執行到此
斷點時,cond都被計算。當cond的值爲非零時,程序在斷點處停止。


用法:

break [break-args] if (condition)


例如:

break main if argc > 1
break 180 if (string == NULL && i < 0)
break test.c:34 if (x & y) == 1
break myfunc if i % (j+3) != 0
break 44 if strlen(mystring) == 0
b 10 if ((int)$gdb_strcmp(a,"chinaunix") == 0)
b 10 if ((int)aa.find("dd",0) == 0)


condition

可以在我們設置的條件成立時,自動停止當前的程序,先使用break(或者watch也可以)設置斷點,
然後用condition來修改這個斷點的停止(就是斷)的條件。


用法:
condition <break_list> (conditon)


例如:
cond 3 i == 3

condition 2 ((int)strstr($r0,".plist") != 0)


ignore

如果我們不是想根據某一條件表達式來停止,而是想斷點自動忽略前面多少次的停止,從某一次開始
才停止,這時ignore就很有用了。


用法:

ignore <break_list> count

上面的命令行表示break_list所指定的斷點號將被忽略count次。


例如:

ignore 1 100,表示忽略斷點1的前100次停止


爲斷點設置命令列表

設置一個斷點並且在上面中斷後,我們必須會查詢一些變量或者做一些其他動作。
如果這些動作可以一起呵成,豈不妙哉!使用命令列表(commands)就能實現這個
功能。


步驟:
1.建立斷點。
2.使用commands命令


用法:
commands <break_list>


例如:
(gdb) commands 1
Type commands for when breakpoint 1 is hit,one per line.
End with a line saying just "end".
> silent
> print "n= %d \n",n
> continue
> end

 

文件記錄 :

斷點2在open函數開頭

(gdb) commands 2
Type commands for when breakpoint 2 is hit,one per line.
End with a line saying just "end".
> x/s $r0
> continue
> end


   
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章