博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
gdb 调试多线程 神贴
阅读量:7183 次
发布时间:2019-06-29

本文共 944 字,大约阅读时间需要 3 分钟。

gdb 调试多线程

如果目标进程已经core dump了,那么 gdb -c core xxx   xxx是对应的程序文件。
如果目标进程还在运行,通常此时用于调试线程死锁的情况。有两种方法
一是 gdb -p xxx  xxx是该进程的进程ID
或者用gcore xxx先获取对应进程的core,他会生成一个core文件 core.xxx
 
进入gdb后
(gdb) info threads
可以列出所有的线程,缺省设为当前的线程前面有一个*号
比如
gdb) info thread
    9 system thread 154262  Priority:154  0xc00000000042f670:0 in __ksleep
   +0x30 () from /usr/lib/hpux64/libc.so.1
    4 system thread 153674  Priority:168  0xc0000000004367d0:0 in _nanosleep2_sys+0x30 () from /usr/lib/hpux64/libc.so.1
    3 system thread 153673  Priority:168  0xc0000000004367d0:0 in _nanosleep2_sys+0x30 () from /usr/lib/hpux64/libc.so.1
    2 system thread 153672  Priority:154  0xc00000000042f670:0 in __ksleep
   +0x30 () from /usr/lib/hpux64/libc.so.1
*   1 system thread 153671  Priority:154  0xc000000000432ef0:0 in _read_sys
   +0x30 () from /usr/lib/hpux64/libc.so.1
 
这是1个死锁的例子,可以看到线程9 和线程2都停在 __ksleep上。
如果想看各个线程的详细堆栈信息,比如要看9的
gdb)thread 9
把当前线程设成9,然后就可以查看相关信息
比如
gdb)bt
将列出栈的调用情况,以及对应源代码中的位置,此时谨慎察看对应代码,一般必有结果

转载地址:http://sxukm.baihongyu.com/

你可能感兴趣的文章
java中创建对象的方法
查看>>
UNIX/Linux系统取证之信息采集案例
查看>>
Python知识点总结篇(五)
查看>>
一致性算法探寻(扩展版)1
查看>>
这几个 Chrome 的 Tab 增强插件你都用上了吗?
查看>>
Java中的浅拷贝与深拷贝
查看>>
微信小程序联盟:官方文档+精品教程+demo集合(6月9日更新,持续更新中……)...
查看>>
spring 事务的传播特性
查看>>
react学习(1)-Why React?
查看>>
RESTful风格的API接口开发教程
查看>>
用 Lua 实现一个微型虚拟机-基本篇
查看>>
php 安装 memcached 扩展出现 zlib 错误
查看>>
CentOS中服务程序随系统启动
查看>>
我的友情链接
查看>>
永久关闭selinux
查看>>
zTree 树使用$('#test').load("url"),后树不能使用
查看>>
C文件的编译、链接和运行指令
查看>>
bootstrap Modal的简单笔记
查看>>
统计一串字符串中连续相同元素的个数
查看>>
奋斗例子——>从1.5k到18k, 一个程序员的5年成长之路
查看>>