我是靠谱客的博主 机灵摩托,最近开发中收集的这篇文章主要介绍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



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



最后

以上就是机灵摩托为你收集整理的gdb调试断点不生效问题的全部内容,希望文章能够帮你解决gdb调试断点不生效问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部