gdb调试断点不生效问题

写了个http客户端,gdb调试的时候在传入参数中含有& 符号时,程序直接执行,而不进入任何断点。不知道什么原因。

gdb 调试clienthttp程序,在入口函数main处添加断点,(其他处添加也无效)

gdb clienthttp

(gdb) b main

(gdb) i b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x00000001200015c0 in main(int, char**) 
                                                   at clienthttp.cpp:57

可以进入断点的情况(不带& 或& 后面没有字符)

(gdb) r //直接run

(gdb) r http://10.200.80.55:8888/test?id=1

(gdb) r http://10.200.80.55:8888/test?id=1&

直接执行完程序,不进断点的情况(带有&,&后面有字符):

(gdb) r http://10.200.80.55:8888/test?id=1&info=test

(gdb) r http://10.200.80.55:8888/test?id=1&i

//先设置下参数在运行试下,也不行

(gdb) set args http://10.200.80.55:8888/test?id=1&info=test

(gdb) show args

Argument list to give program being debugged when it is started is "http://10.200.80.55:8888/hello?id=1&infor=test".

(gdb) r


经过多次测试,只要不带&就能进入断点,带上就不能了。不知道原因.


后来发现把参数加上“”就能进入断点了

(gdb) r "http://10.200.80.55:8888/test?id=1&info=test"

(gdb) set args "http://10.200.80.55:8888/hello?id=1&infor=2"
(gdb) show args
Argument list to give program being debugged when it is started is ""http://10.200.80.
55:8888/hello?id=1&infor=2"".

(gdb) r



参数都加上“ ”就正常进入断点了。不带& 不加“ ”也可以。这个问题恶心了我好大会啊。



  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值