GDB的个人浅析

前言:如果说gtest是静态地给程序把脉看病,分析问题,解决问题,那么GDB就是动态地实时地给程序分析和解决问题。(gtest相关链接:gtest的个人经验总结_《一刀流》-CSDN博客

那么GDB如何动态地跟踪程序呢?这就不得不提ptrace系统调用了,它有点像现在的中间商,不过不赚差价,会一五一十地观察和控制子进程的一举一动。用户干嘛,它就让目标程序干嘛,不会乱来。

 1.用法

网上总结了很多基本命令,这里就不赘余了,主要讲讲项目中GDB如何发挥他更大的作用。

a.首先你得知道,你需要调试的进程号,可以通过ps ax |grep xxx进行查看;

b.然后GDB,进入调试,通过attach xxx,依附你要调试的进程;

c.设置你的sysroot目录,set  sysroot /;

d.在程序的一个必经之路,或者你想知道某个函数那里打断点,b xxx_func;

e.bt 可以多次用 //backtrace 查看函数的调用的栈帧和层级关系,简写bt 

f.frame 1  //fr 1 

g.info frame  //frame:切换函数的栈帧

2.细节

a.可以先r运行一下,再ctrl c,保证程序启动;

b.info sharedlibrary 查询进程的依赖库;

c.info threads //*代表所在的线程;

d.thread apply all bt  //所有线程的bt

e.thread apply 1 bt  //第一个线程bt

f.set solib-search-path /opt/libs:/opt/webengine/lib //设置依赖库路径

g.gdb 进程 coredump //解coredump (gzip -d xxx  再bt)

友情链接:

LINUX下GDB的使用方法(简单说说)_longfan的博客-CSDN博客_gdb

gdb调试的基本使用_zdy0_2004的专栏-CSDN博客_gdb调试

gdb基本命令(非常详细)_yinjiabin的博客-CSDN博客_gdb

gdb的工作原理_qinm的专栏-CSDN博客_gdb原理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一刀流剑客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值