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,就能直接运行到指定地址后暂停了

 

posted @ 2012-07-21 17:00  白帆mvp  阅读(279)  评论(0)    收藏  举报