首页 > 编程语言 >gdb调试c++多线程死锁问题初步

gdb调试c++多线程死锁问题初步

时间:2023-05-30 13:36:28浏览次数:48  
标签:PID gdb c++ bt 命令 死锁 线程 堆栈 多线程

https://blog.csdn.net/zsiming/article/details/126695393

 

总结:

ps aux | grep filename  // 找出进程ID

top -Hp PID  // 列出进程号为PID下的所有线程

gdb atattch PID  // 用gdb调试正在运行的进程(进程号为PID)(需要sudo权限)

thread apply all bt  //这里涉及2个命令 :thread apply all  CMD,将CMD命令用于所有线程; bt:查看线程的堆栈信息。从这个命令可以查出每个线程对象跑哪个线程函数

info threads  // 列出所有线程的堆栈简要信息以及它对应的线程索(线程索就是一个索引)

thread ID  //如果要调试程索为ID的线程,就用这个命令跳转到这个线程,这个命令会列出这个线程的简要堆栈调用信息

bt  // 利用上面的命令跳转到某个线程后,再敲bt命令就可以单独列出这个线程的完整堆栈调用信息,此时可以看到线程跑道哪个函数(以及这个函数在代码中的位置第X行),如果正好调用到获取锁的函数,说明它在获取锁这里被阻塞了

 

标签:PID,gdb,c++,bt,命令,死锁,线程,堆栈,多线程
From: https://www.cnblogs.com/tan-wm/p/17442959.html

相关文章

  • C++结构体对齐详解
    内存对齐是一种提高内存访问速度的策略,CPU在访问未对齐的内存可能需要经过两次的内存访问,而经过内存对齐一次就可以了cout<<"char:"<<sizeof(char)<<endl;cout<<"int:"<<sizeof(int)<<endl;cout<<"short:"<<sizeof(short)<<endl;cout&l......
  • c++11: all_of 、 any_of 和 none_of
    有效的字母异位词classSolution{public:boolisAnagram(strings,stringt){if(s.size()!=t.size())returnfalse;intans[26]={0};for(auto&ch:s){++ans[ch-'a'];}for(auto&......
  • C/C++学生成绩管理系统[2023-05-30]
    C/C++学生成绩管理系统[2023-05-30]学生成绩管理系统设计----高级语言课程设计题目问题描述:设学生信息包括:学号、姓名、期末成绩、平时成绩,对学生的学习成绩信息进行管理。设计要求:实现学生信息的录入、修改、插入、删除、查询、计算总评成绩、根据总评成绩排序和划分等级、......
  • c++类型转换
    C语言中的类型转换C语言和C++都是强类型语言,如果赋值运算符左右两侧变量的类型不同,或形参与实参的类型不匹配,或返回值类型与接收返回值的变量类型不一致,那么就需要进行类型转换。C语言中有两种形式的类型转换,分别是隐式类型转换和显式类型转换:隐式类型转换:编译器在编译阶段自......
  • C++ Primer 第一、二章 C++基础,变量和基本类型
    一、C++基础<iostream>包含两个基础类型,istream-输入流和ostrea-输出流。标准库定义了四个IO对象cin-标准输入(istream),cout-标准输出(o),cerr-标准错误(o),clog-用来输出程序运行时的一般性信息(o)。 #include<iostream>intmain(){std::cout<<"Enter"<<std:......
  • C# 多线程
    什么是线程Thread线程是一个可执行路径,它可以独立于其它线程执行。每个线程都在操作系统的进程(Process)内执行,而操作系统进程提供了程序运行的独立环境。单线程应用,在进程的独立环境里只跑一个线程,所以该线程拥有独占权多线程应用,单个进程中会跑多个线程,它们会共享当前的执行......
  • 第十二届蓝桥杯c++b组国赛题解(还在持续更新中...)
    试题A:带宽解题思路:由于小蓝家的网络带宽是200Mbps,即200Mb/s,所以一秒钟可以下载200Mb的内容,根据1B=8b的换算规则,所以200Mb=200/8MB=25MB。所以小蓝家的网络理论上每秒钟最多可以从网上下载25MB的内容。代码实现:#include<iostream>#include<algorithm>usingnamespacestd......
  • Multiserver游戏服务器Demo[C++&Lua]
    代码参考代码文件参考下述详解的类图,工程参考第零章工程说明关键特性对Socket库进行封装,抹平Socket的Window&Linux的平台差异。C++嵌入lua脚本,增加开发者编码效率,减少编译时间消耗。非阻塞网络IO多线程任务模型多服务模型详解Socket库封装主要是对C++的Socket库进行......
  • C/C++家谱管理系统[2023-05-29]
    C/C++家谱管理系统[2023-05-29]题目8:家谱管理系统(1~3人)[问题描述]实现具有下列功能的家谱管理系统1).输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。2).......
  • Linux下C++实现一个定时器
    要在Linux下实现一个定时器,可以使用以下两种方法:使用系统提供的定时器APILinux系统提供了一些定时器API,如setitimer、timer_create、timer_gettime等,可以使用这些API来实现定时器。以setitimer为例,可以按照以下步骤来使用:1.定义一个itimerval结构体变量,该结构体包含定时器的初......