用了好久的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