Windows C++ 排查死锁

开发出来应用程序突然间卡死不动,如果其中是因为死锁问题卡列该如何排查

下面是一个简单的死锁例子

cpp 复制代码
#include <iostream>
#include <thread>
#include <mutex>

std::mutex a, b;

void function_a() {
	std::lock_guard<std::mutex> _x(a);
	std::this_thread::sleep_for(std::chrono::milliseconds(500));
	std::lock_guard<std::mutex> _y(b);
}

void function_b() {
	std::lock_guard<std::mutex> _y(b);
	std::lock_guard<std::mutex> _x(a);
}


int main() {
	std::thread t1(function_a);
	std::thread t2(function_b);

	t1.join();
	t2.join();
	return 0;
}

以Debug模式编译运行后,毫无意外的没反应了。

现在打开任务管理器,找到进程

CPU利用率0,显然不太会有死循环,右键"转到详细信息 ",然后"分析等待链 "。

线程18208 在等待11188结束,线程11188 卡住了。

现在可以打开WinDbg,Attach 到目录进程,在这之前要设置好符号目录,这些步骤就跳过。

现在直接!threads查看有哪些线程

计算下11188 是哪一条

切换到2bb4

看看调用堆栈

找到问题源码

现在可以分析代码了

相关推荐
恋爱绝缘体13 小时前
2020重学C++重构你的C++知识体系
java·开发语言·c++·算法·junit
Z1Jxxx3 小时前
加密算法加密算法
开发语言·c++·算法
张世争4 小时前
windows clion MingW cmake 编译运行 FreeRTOS
windows·freertos·mingw·cmake·clion
乌萨奇也要立志学C++4 小时前
【洛谷】递归初阶 三道经典递归算法题(汉诺塔 / 占卜 DIY/FBI 树)详解
数据结构·c++·算法
AI 智能服务4 小时前
第6课__本地工具调用(文件操作)
服务器·人工智能·windows·php
️停云️4 小时前
【滑动窗口与双指针】不定长滑动窗口
c++·算法·leetcode·剪枝·哈希
charlie1145141914 小时前
嵌入式现代C++教程: 构造函数优化:初始化列表 vs 成员赋值
开发语言·c++·笔记·学习·嵌入式·现代c++
IDC02_FEIYA5 小时前
SQL Server 2025数据库安装图文教程(附SQL Server2025数据库下载安装包)
数据库·windows
IT=>小脑虎5 小时前
C++零基础衔接进阶知识点【详解版】
开发语言·c++·学习
在路上看风景5 小时前
01. C++是如何工作的
开发语言·c++