百独托管7500 紫田网络超高转化播放器收cps[推荐]速盾CDN 免实名免备防屏蔽阿里云 爆款特卖9.9元封顶提升alexa、IP流量7Q5团队
【腾讯云】中小企福利专场【腾讯云】多款产品1折起高防 随时退换 好耶数据小飞国外网赚带你月入万元炎黄网络4H4G10M 99每月
香港带宽CN2/美国站群优惠中客数据中心 服务器租用联盟系统移动广告平台 中易企业专场腾讯云服务器2.5折九九数据 工信部正规资质
腾讯云新用户大礼包代金券高价收cpa注册量高价展示【腾讯云】2核2G/9.93起租服务器找45互联 随时退换阿里云 短信服务 验证秒达

[其它内容] [C++] gdb高级调试方法 [复制链接]
查看:412 | 回复:1

132

主题

134

帖子

227

积分

落伍者(一心一意)

Rank: 1

贡献
155
鲜花
1
注册时间
2012-6-25
发表于 2012-10-29 10:08:21 | |阅读模式 来自 中国北京
1,启动gdb的时候自动执行脚本
gdb -x your_script
注意:your_script里面只能有gdb命令。不过我们都知道gdb命令里面有个shell指令,所以实际上这里可以做任何事。


2,调试运行中的进程
在gdb里面有个attach指令,可以调试运行中的进程。
结合上面的-x参数,实际上我们可以写一个脚本,自动的attach到我们关心的进程上面,然后自动的做很多事情:比如设置trace命令并且continue。

3,设置条件断点
break test_func() if x == 5
可以在x == 5 的时候中断在test_func()里面

4,在断点自动执行命令

break test_func() if x == 5
commands
>shell ls
>continue

>end
可以在命中断点的时候自动执行命令。

5,结合以上各点,我们可以做什么呢?
我们可以调试运行中的一个进程,当发现进程尝试mallc()超过100KB的内存块的时候,就写一行日志然后给ops发一封电子邮件。
我们还可以调试运行中的一个进程,让这个进程把它的每个细节都打印到日志里面去。
我们可以让这个运行中的进程,在任何条件下执行任何他自己的任何函数。
我们可以让这个运行中的进程,进行各种跳转。

29

主题

2779

帖子

-5

积分

接近落伍(少量栏能发帖)

贡献
48
鲜花
0
注册时间
2012-10-22
发表于 2012-11-1 02:57:22 | 来自 中国上海
不错。值得学习啊,顶一个
快线排名网|kxpmw.com
论坛客服/商务合作/投诉举报:2171544 (QQ)
落伍者创建于2001/03/14,本站内容均为会员发表,并不代表落伍立场!
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论!
落伍官方微信:2030286 邮箱:(djfsys@gmail.com|tech@im286.com)
© 2001-2014

浙公网安备 33060302000191号

浙ICP备11034705号 BBS专项电子公告通信管[2010]226号

  落伍法律顾问: ITlaw-庄毅雄

手机版|找回帐号|不能发帖?|Archiver|落伍者

GMT+8, 2024-11-1 09:33 , Processed in 0.047469 second(s), 36 queries , Gzip On.

返回顶部