概述
写了个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
参数都加上“ ”就正常进入断点了。不带& 不加“ ”也可以。这个问题恶心了我好大会啊。
最后
以上就是机灵摩托为你收集整理的gdb调试断点不生效问题的全部内容,希望文章能够帮你解决gdb调试断点不生效问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复