Chinaunix首页 | 论坛 | 博客
  • 博客访问: 366298
  • 博文数量: 83
  • 博客积分: 5322
  • 博客等级: 中校
  • 技术积分: 1057
  • 用 户 组: 普通用户
  • 注册时间: 2010-04-11 11:27
个人简介

爱生活,爱阅读

文章分类

全部博文(83)

文章存档

2015年(1)

2013年(1)

2012年(80)

2011年(1)

分类: LINUX

2012-09-19 22:11:24

4. 如何使用断点?

断点告诉gdb,你想在某一个确定的代码行停止程序的运行。你也可以在某个函数调用处停止。一旦程序停下来后,你可以在内存中“游逛”,查看变量的值,检查栈,以及单步运行程序。

4.1如何在一行代码处设置断点?

设置断点的命令时break。如果你仅仅有一个源文件,你可以像下面的方式设置断点:

(gdb) break 19

Breakpoint 1 at 0x80483f8: file test.c, line 19

如果你拥有多个文件,你必须为同时为break命令指定文件名:

(gdb) break test.c:19

Breakpoint 2 at 0x80483f8: file test.c, line 19 

4.2如何在一个C函数处设置断点?

为了在一个C函数上设置断点,将其函数名传递给break命令。

(gdb) break func1

Breakpoint 3 at 0x80483ca: file test.c, line 10   

4.3如何在C++函数处设置断点?

C++函数设置断点与在C函数中设置断点相似。然而C++是多台的,所以你必须告诉gdb你需要在哪个版本的函数上设置断点(及时只有一个的情况下)。为了做到这一点,你要告诉gdb该函数的参数类型。

(gdb) break TestClass::testFunc(int)

Breakpoint 1 at 0x80485b2: file cpptest.cpp, line 16.

4.4 如何设置一个临时的断点?

使用tbreak 而不是break。临时断点仅仅停止程序的一次执行,然后被删除。

4.5如何获得断点列表?

使用info breakpoints命令。

(gdb) info breakpoints

Num Type           Disp Enb Address    What

2   breakpoint     keep y   0x080483c3 in func2 at test.c:5

3   breakpoint     keep y   0x080483da in func1 at test.c:10

4.6如何去使能断点?

使用diable命令。将你希望去使能的断点的标号作为disable的参数。你可以找到断点列表中各断点的标号,如上面所示。在下面的例子中,我们可以看到断点2已经被去使能了(在Enb列下有一个n)。

(gdb) disable 2

(gdb) info breakpoints

Num Type           Disp Enb Address    What

2   breakpoint     keep n   0x080483c3 in func2 at test.c:5

3   breakpoint     keep y   0x080483da in func1 at test.c:10

4.7 如何跳过断点?

为了跳过一个断点若干次,我们使用ignore命令。Ignore命令有两个参数:待跳过的断点号,以及跳过的次数。

(gdb) ignore 2 5

Will ignore next 5 crossings of breakpoint 2.

阅读(1575) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~