gdb调试(线程和正在运行中的程序)

用了好久的gdb 但对于多线程的调试自己还时存在一些问题,因此这次花点时间整理整理。

所有的gdb调试文章


gdb是有一组命令辅助多线程调试的。

  • info threads 显示可调试的所有线程,gdb 会给每个线程分配一个ID 我们可以是使用这个ID来操作对应的线程。调试目标线程
  • thread ID 调试指定ID的线程*代表被调试的 线程
  • set scheduler-locking 调试多线程中默认除过被调试的线程在执行外,其他线程也在执行可以设置这个

coredump文件的分析。

如何判断一个文件是不是coredump文件readlef -h core

coredump文件的生成ulimit -c unlimited (可以产生coredump且不受大小限制)
通过bt或者where查看调用堆栈信 息
什么情况下不生成coredump文件,除过没有设置coredump文件的大小还有收到信号或者栈异常
todo

gdb调试运行时的程序参考这篇文章

(gdb) attach pid
set var
backtrace 查看当前运行到第几行。
finsh推出当前调试的函数。
gcore可以生成core文件。
如何在gdb中调试一个带参数的参数
set设置
暂停程序ctril+c
b

gdb下如何查看宏的值

在GCC编译程序的时候,加上-ggdb3参数,这样,你就可以调试宏了。
在gdb下可以查看当前的宏的值
todo

如何让线程暂停 threadno +线程ID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值