断点
设置断点:
- b function (停在函数入口)
- b 行数 (停在当前文件中的行)
- b 文件:行数 (停在指定文件的指定行)
b main
b 35
b source/bed.c:35
断点使能:
- enable (使能所有断点)
- dis 全部失能 (失能全部断点)
- enbale 断点号 (使能某一个断点)
- disable 断电号 (失能某一个断点)
enable
dis
enable 3
disable 3
查看断点:
info breakpoints (打印所有的断点,包括watchpoint)
条件断点:
- b 断点位置 if 条件 ( 在某某位置上添加条件断点)
- cond 断点号 条件 (将某个断点修改为条件断点,注意不需要像直接条件断点一样加上if)
b main.c:16 if i == 15
b 3 i == 15
hint
条件断点表达式及其灵活,可以使用c语言中的几乎任何表达式,但是这些表达式都需要具有布尔值, 如:
- 逻辑运算符( <、<=、==、 !=、>、 >=、 &&、 ||、 等)
b 180 if string==NULL && i < 0
- 位运算符 (& 、|、 ^、 >>、 <<等)
b test.c:34 if (x & y) == 1
- 算术运算符(+、 -、 x、 /、 %、 等)
b myfunc if i % (j + 3) != 0
断点命令:
- 可以在断点命中时执行命令commands
commands 断点号
输入命令
end
commands 3
silent (命中断点时,不打印当前的堆栈信息)
printf "Damn i am good \n"
end
hint
通过commands功能,我们可以实现vs下trace断点的功能,即程序每次命中断点打印自己需要的信息,但是继续执行
commands 3
silent
printf "Damn i am good \n"
continue (加上continue即可完成trace的功能)
end
监视点:
设置监视点:
- 监视点是特殊的断点,并不附加在某一行代码上,而是依赖于表达式
watch i
watch (i | j > 12) && i > 24 && strlen(name) > 6
变量:
打印当前栈中所有局部变量
info locals