爱生活,爱阅读
分类: LINUX
2012-09-19 22:11:24
断点告诉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.