gdb里一些不常用的命令
有时候对一个复杂的程序的局部模块进行反复调试,每次都要重新运行程序,然后在定位到模块,这样太麻烦了,我们可以gdb运行程序,然后定位到要调试的模块以后,在gdb内生成core文件,这样下次调试就直接用gdb加载这个文件就好了
generate-core-file
显示栈
bt
只显示前N栈
bt N
只显示后N栈
bt -N
连续运行N次continue
c N
连续运行N行code
n N
条件断点
b 位置 if 条件
忽略某个断点N次
ignore 断点编号 次数
until命令
直接用于使程序运行完当前局部程序段后暂停,可用于跳出条件判断语句和跳出循环
until *address 可以指定程序暂停的地址
可以向下面这么用
Breakpoint 1, main () at dump.c:4 4 int i = 0; (gdb) l 1 #include <stdio.h> 2 int main() 3 { 4 int i = 0; 5 while(i < 100) 6 { 7 i++; 8 //printf("1111111\n"); 9 } 10 (gdb) 11 printf("over\n"); 12 13 return 0; 14 15 } (gdb) info line 11 Line 11 of "dump.c" starts at address 0x80483d3 <main+31> and ends at 0x80483df <main+43>. (gdb) until *0x80483d3 main () at dump.c:11 11 printf("over\n"); (gdb)
直接用过 info line 行号,获取要暂停地方的地址,然后until *address,就能直接运行到指定地址后暂停了
浙公网安备 33010602011771号