gdb在文件行号上打断点

转自:100个gdb小技巧

在文件行号上打断点

例子

/* a/file.c */




include <stdio.h>

void print_a (void)
{
puts (“a”);
}

/* b/file.c */

include <stdio.h>

void print_b (void)
{
puts (“b”);
}

/* main.c */
extern void print_a(void);
extern void print_b(void);

int main(void)
{
print_a();
print_b();
return 0;
}

技巧

这个比较简单,如果要在当前文件中的某一行打断点,直接b linenum即可,例如:

+

(gdb) b 7

也可以显式指定文件,b file:linenum例如:

+

(gdb) b file.c:6
Breakpoint 1 at 0x40053b: file.c:6. (2 locations)
(gdb) i breakpoints 
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   <MULTIPLE>         
1.1                         y     0x000000000040053b in print_a at a/file.c:6
1.2                         y     0x000000000040054b in print_b at b/file.c:6

可以看出,gdb会对所有匹配的文件设置断点。你可以通过指定(部分)路径,来区分相同的文件名:

+

(gdb) b a/file.c:6

注意:通过行号进行设置断点的一个弊端是,如果你更改了源程序,那么之前设置的断点就可能不是你想要的了。

+

详情参见gdb手册

+

贡献者

xmj

                </section>


            </div>
        </div>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值