关于gdb调试(break)
我是一个新手,关于gdb调试要问大家,比如下面的程序
main()
{
int i=0;
for (i=0;i<100;i++)
{
printf("%d",i);
}
}
问题一:因为如果不加断点,运行run,程序就自动执行完毕,所以先用了个break main,当运行run后,现在我想在i=10时使程序停止一下,我加了句break if (i==10),但提示说Note:breakpoint 1 also set at pc 0x804836a.
Breakpoint 2 at 0x804836a: file test.c, line 6,我用info b查看,显示有两个断点了,但条件断点不起作用,不知道怎么回事?
问题二:这里break main不加的话就直接运行了,难道调试时每次都要加么?
问题三:如果在run前设断点break if (i==10),提示No default breakpoint address now,但为什么break main就可以呢?
问题点数:50、回复次数:3Top
1 楼x86(大雪)回复于 2005-12-14 15:13:29 得分 25
假设
printf("%d",i);
是第8行。
b 8
设置第八行为第一个断点
condition 1 i==10
设置第一个断点当i==10时有效Top
2 楼YanDong_8212(谢科)回复于 2005-12-15 09:17:17 得分 25
一、break if i=100,这个才是设置条件断点。
二、每次调试都要单独加,但如果你不是从main开始想调试函数,可以直接输入break if i=100,同样能运行。
三、如果break if i=100不行,可能是没加-g编译选项。如果i不会等于100,加了断点也不会停。Top
3 楼shanglinhu(shanglinhu)回复于 2005-12-15 14:03:11 得分 0
我试了一下,如果break if i = 100的话,会在i=100时停止,但往下就不会执行了,应该是break if i==100才对,但我又试了下,break if i==100不能放在太前面设置,否则不起作用,在循环开始时再设置才会停下来,我也不知道怎么回事.哪位能给我解释一下?Top




