软件调试的艺术
第2章 停下来环顾程序
暂停机制(P39)
有3种暂停机制:
- 断点:通知GDB在程序中的特定位置暂停执行。
- 监视点:通知GDB当特定内存位置(或者涉及一个或多个位置的表达式)的值发生变化时暂停执行。
- 捕获点:通知GDB当特定事件发生时暂停执行
恢复执行(P56)
恢复执行有3类:
第一类是使用step(s)和next(n)“单步”调试程序,仅执行代码的下一行然后再次暂停。
第二类是使用continue(c)组成,使用GDB无条件的恢复程序的执行,直到它遇到另一个断点或程序结束。
第三类是使用finish(fin)或until(u)命令恢复。这种情况下,GDB会恢复中心,程序继续运行直到遇到某个预先确定的条件(比如:到达函数的末尾),到达另一个断点,或者程序完成。
next:stepping over 执行函数,不会在其中暂停,step:stepping into 在函数中的第一句处暂停.
条件断点(P66)
-设置条件断点的语法为:
break break-args if (condition)
其中:break-args是可以传递给break以指定断点位置的任何参数
断点命令列表(P70)
使用commands命令设置命令列表:
commands breakpoint-number
commands
end
具体例子:
commands 2
slient
printf "XXXX"
end