《软件调试的艺术》书中讲了三种工具:gbd;ddd;eclipse。主要还是讲gdb。
chap1预备知识 {20131021}
1.3.3 部分需要实践中体会
1.7 实践一下
root@ubuntu:/home/debug/chap1# gcc -g -Wall -o insert_sort ins.c 【-g】让编译器将符号表保存在生成的可执行文件中。
只是调试到书中提到的,还需要努力下
1.8 .gdbint文件没找到,需要单独看下
chap2.停下来环顾程序 {20131019}
调试器通知程序暂停执行,并能够检查变量,跟踪执行路径。
2.2 GDB的工作针对的是机器语言指令,而不是源代码行。所以当GDB执行到第35行断点时,可以认为GDB是在源代码的第34和35行之间等待。
GDB可以使用源代码行,是因为可执行文件中包含了额外信息。【mark】
2.4 发现设置断点后没有正好在预期放断点的地方产生断点:编译时使用选项优化了代码;GDB认为这行调试没什么意义。
2.5 示例
出现注1的情况:因为在任何给定时间,GDB都有一个焦点,将当前的文件看成是“活动”文件;应用list命令后,焦点转移到另一个文件。
tbreak命令是,设置临时断点
2.6 Q:在不离开GDB的情况下,如何重新编译?【不打开多个tty时】
所有gdb设置断点,在quit断出后则不存在了,但书上说可以保存断点,是将断点放在源代码所在目录的.gdbinit启动文件中。【mark】我没find到。
2.9 next和step就是相当于f10和f11的区别; continue,finish,until命令的区别没细理解。
2.10 break main if argc>2 入参个数大于2的情况,main函数设断点
2.11 commands命令没理解。