《軟件調試藝術》讀後感四
1、條件斷點
僅僅有符合某種條件時才在斷點處停止。
類似於監視點的工作方式,每當該變量的值發生變化時,監視點都會中斷。條件斷點僅僅會在懷疑有問題的代碼處當變量呈現該懷疑值時才中斷。
設置條件斷點:breakbreak-args if (conditon)如:break if (i==700) condition 6999
條件能夠是:
1、 相等、邏輯和不想等運算符(<,<=,==,!=、,>。>=。&&,||等)如break 180 if string == null && I < 0
2、 按位和以為運算符等(&,|,^。>>,<<等)如break test.c:34 if(x & y) == 1
3、 算術運算(+,-,*。/,%)如break myfunc if i % (j + 3) != 0
自己寫的函數、或庫函數經過鏈接之後都能夠調用,比方在這樣的環境中。能夠用if strlen(mystring) == 0等作為推斷,自己寫的函數也是一個道理。
正常斷點是無條件操作,而條件斷點是有條件操作,條件達到之後才幹暫停。
2、斷點命令列表
使用commands命令設置命令列表:
Commandsbreakpoint-number
……
commands
……
end
比如:
$gdb Fibonacci
break Fibonacci
commands 1
printf “Fibonacciwas passed %d.\n”, n
end
假設認為輸出太冗余,能夠使用silent命令,它須要在命令列表的第一個輸入,使用GDB更安靜地觸發斷點。
如:
command 1
silent
printf “…….”
end假設命令列表中的最後一個命令是continue。GDB將在完畢命令列表中的命令後繼續自己主動運行程序。
3、宏的創建
假設你的這些命令還會在其他程序中使用,那麽你能夠使用GDB中的define命令創建宏。
創建宏print-and-go:
define print-and-go=> 長久保存則將其放在.gdbinit文件裏。
printf $arg0,arg1
continue
end
這裏假設要給它傳送參數,則參數之間沒有不論什麽的符號。查看宏使用show user命令,能夠得到全部的宏列表。
《軟件調試藝術》讀後感四