1.断点的设置
①普通断点: b n(注:n为行号),或者是break n。
此方法过于简单,不再举例说明。
②条件断点:b n if 逻辑表达式
注:以上两种断点类型中tbreak设置方法与break相同,只不过tbreak只在断点停一次,过后会自动将断点删除,break需要手动控制断点的删除和使能。
demo:
1 #include<iostream>
2 using namespace std;
3 int main()
4 {
5 int i=0;
6 while(i<100)
7 i++;
8 return 0;
9 }
(gdb) break 7 if i==55
Breakpoint 1 at 0x8048553: file test2.cpp, line 7.
(gdb) r
Starting program: /home/wo/mypro/2016123/test2
Breakpoint 1, main () at test2.cpp:7
7 i++;
Missing separate debuginfos, use: debuginfo-install glibc-2.12-1.80.el6.i686 libgcc-4.4.6-4.el6.i686 libstdc++-4.4.6-4.el6.i686
(gdb) p i
$1 = 55
③rbreak的特殊用法
rbreak 可以跟一个正则表达式。rbreak + 表达式的用法与grep + 表达式相似。即在所有与表达式匹配的函数入口都设置断点。
demo:
#include<iostream>
using namespace std;
int a,b;
void outputa()
{
cout<<a;
}
void outputb()
{
cout<<b;
}
int main()
{
cin>>a>>b;
outputa();
outputb();
return 0;
}
(gdb) rbreak output*
Breakpoint 1 at 0x80485fa: file test2.cpp, line 7.
void outputa();
Breakpoint 2 at 0x8048617: file test2.cpp, line 11.
void outputb();