GDB 使用备忘

一些常用的 gdb 使用命令备忘。

thread

用法:thread xx。切换当前活动线程。用于调试多线程程序。xx 为线程号,用 info thread(th)查看,每个线程的第一个数字就是线程号。

watch

硬件写断点。这种断点和普通的 break 有点不同,需要每次挂载 gdb 后,先利用普通的 break 让程序停下来,然后查看出你要查看变量的地址(用p)。然后再用 watch 命令设置。然后每次程序重新运行都要重新设置,因此每次变量地址的都不一样。

p

这个命令平时用来显示一些变量的值。其实它还有一个功能就是执行函数。调试  MiniGUI  的时候,最典型的用法用法就是可以将你想查看的一些 memdc 中的图像信息输出到屏幕上进行检查。方法是调用  BitBlt  ,注意这种情况一些宏定义的变量无法直接使用,而是要填入真正的数值,这些可以从代码里面去差。例如先把屏幕一块地方填充成红色,然后再把 memdc 中的内容输入到屏幕的这个地方:
// SetBrushColor(hdc, color) 的宏定义是 SetDCAttr(hdc, DC_ATTR_BRUSH_COLOR, color)
// DC_ATTR_BRUSH_COLOR 值就是2
// HDC_SCREEN 的值就是0
// 如果自己知道 rgb 对应的 pixel 值的话,也可以不用 RGB2Pixel
p SetDCAttr(0, 2, RGB2Pixel(0, 255, 0, 0))

p FillBox(0, 400, 0, 360, 480)

p BitBlt(memdc, 0, 0, 0, 0, 0, 400, 0, 0)


查看 coredump 文件

首先要让程序在崩溃的时候产生 coredump 文件。输入 ulimit -c unlimited 命令(注意这个只对一个终端有效)。然后在程序崩溃的时候,就会产生 core.xx 的文件。使用 gdb app core.xx 命令查看(app 就是产生 core.xx 的程序)。然后就和普通的 gdb 用法一样了,用 bt 查看崩溃时的堆栈信息啊,但是就是不能执行而已。

disassemble

对当前的执行到的代码反汇编。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值