使用windbg 检查c++程序死锁
上一篇文章是使用lockcop软件检测死锁的。参考见:使用lockcop软件检测c++死锁_baidu_16370559的博客-CSDN博客
现在使用windbg。
可运行的程序和代码还是一样的。
1.配置symbols
因为我使用的windbg 版本是6.12 。提示Unable to resolve ntdll!RtlCriticalSectionList
因为在新版本的windbg中可能部分指令不支持。
如果有如下提示
NTSDEXTS: Unable to resolve ntdll!RtlCriticalSectionList
NTSDEXTS: Please check your symbols
解决方法:下载symbols
在File=>Symbol Path File 输入SRV*C:\Windows Sysmbols* http://msdl.microsoft.com/download/symbols
然后在命令框中输入.reload
2.直接双击运行测试程序memeroy.exe。windbug 操作 菜单file->attach to a process 操作连接到memeroy.exe。
3.先用!locks查看所有的线程占用的锁
这里可以看到有2个线程正在等待2个锁,第一个线程等待的锁是01056424,但被44f28这条线程占用,第二个线程等待的锁是010563f4,但被415b8线程占用.我们需要查看44f28线程和415b8线程的id,具体可以通过查看工具栏中Processes and Threads.结果见上图。
4.分别输入~3kb和~2kb查看这个两个线程的调用栈
由数据可知,44f28线程正在等待一把010563f4的锁,而415b8线程也正在等待锁01056424。
分析:结合第三步获取的信息可知,锁010563f4 是线程415b8 占用的,而锁01056424是线程44f28占用的,如此形成环路,就产生了死锁。
使用windbg 检查c++程序死锁相关推荐
- WinDBG调试dNet程序总结
WinDBG工具简介 http://www.cnblogs.com/mashuping/archive/2009/03/28/1424168.html 对于一般的程序不需要使用WinDBG工具去调试, ...
- PPC中检查某程序是否运行
有时候经常需要检查某个程序是否正在运行,在windows mobile 5.0系统开发中我经常用到以下几种方法: 第一种: HANDLE hMutex=::CreateMutexW(NULL,true ...
- loadrunner11,卸载360浏览器后提示“无效的应用程序路径!请检查应用程序是否存在!
我安装的loadrunner是11版本的,安装之前我的电脑上有安装了很多的浏览器,结果一开始录制脚本的时候,页面直接跳转到360浏览器上面了,但是显示正在录制的脚本为0个,于是就把360给卸载了,进行 ...
- 安装loadrunner11,卸载360浏览器后提示“无效的应用程序路径!请检查应用程序是否存在!
我安装的loadrunner是11版本的,安装之前我的电脑上有安装了很多的浏览器,结果一开始录制脚本的时候,页面直接跳转到360浏览器上面了,但是显示正在录制的脚本为0个,于是就把360给卸载了,进行 ...
- 安装loadrunner11,卸载360浏览器后提示“无效的应用程序路径!请检查应用程序是否存在!”...
我安装的loadrunner是11版本的,安装之前我的电脑上有安装了很多的浏览器,结果一开始录制脚本的时候,页面直接跳转到360浏览器上面了,但是显示正在录制的脚本为0个,于是就把360给卸载了,进行 ...
- 使用WinDbg抓取程序报错的Dump文件
使用WinDbg抓取程序报错的Dump文件,例如抓取IE崩溃的Dump,教程 前几天分享了一个关于如何抓蓝屏Dump的帖子,今天再和大家分享一个使用WinDbg来抓取程序崩溃的Dump.不过还是先来段 ...
- Windbg调试.net程序(2)实例分析
一.样本信息 样本名字: Moment.exe 样本大小: 8,400,896 bytes 病毒类型: Trojan.MSIL/Injector sha1: 17b98df6f5e086a5c1e7b ...
- Java 程序死锁问题原理及解决方案
原文出处: IBM developerWorks Java 语言通过 synchronized 关键字来保证原子性,这是因为每一个 Object 都有一个隐含的锁,这个也称作监视器对象.在进入 syn ...
- 万万没想到,一个 MongoDB.Driver 的 bug 导致 .NET5 程序死锁!
一:背景 1. 讲故事 这个月初,星球里的一位朋友找到我,说他的程序出现了死锁,怀疑是自己的某些写法导致mongodb出现了如此尴尬的情况,截图如下: 说实话,看过这么多dump,还是第一次遇到真实的 ...
- WinDbg调试.NET程序入门
俗话说:万事开头难! 自从来到新公司遇到性能问题后,需要想办法解决这个问题,但是一直没有合适的性能分析工具,然后找到StevenChennet 大神帮忙,他用WinDbg工具远程帮我分析了一个 dum ...
最新文章
- java 1.7 liunx_在linux下安装Jdk1.7
- 分布式系统理论之两阶段提交协议
- Python之Pandas库学习(一):简介
- VB无所不能之三:VB截获Windows消息的钩子
- Uncaught SecurityError: Failed to execute 'replaceState' on 'History': A history state object with
- 许可证( License LicenseLicenseLicenseLicenseLicense)服务器配置
- android 左右卡片切换,3D卡片切换
- HDU 2076 夹角有多大(题目已修改,注意读题)
- Atitit.cateService分类管理新特性与设计文档说明v1
- 如何从零创建一个机器人模型
- jpg转bmp c语言 linux,C++_C语言实现BMP转换JPG的方法,本文实例讲述了C语言实现BMP转 - phpStudy...
- 【Spring Security】spring security 之初探jwt
- 五、SQL–索引/约束⑥(外键约束)
- 2021 工业信息安全技能大赛 线上赛第一场--隐藏的工程
- ola2672978400 oj最短路径
- 建筑力学与结构【14】
- linux 静态编译多媒体框架,Go编译32位GNU静态链接库的方法
- 2021软考数据库工程师复习笔记记录
- Ubuntu配置socks5转http
- 发布JNCIP考试标准版本JUNOS实验用虚拟机
热门文章
- a标签的onclick和href同时存在的写法
- LVS-DR+Ldirectord+FreeNas实现负载均衡群集
- PHP可以通过什么组件上传大文件
- 使用Koa2重构博客项目
- C# RabbitMQ(一)介绍
- Django中使用MySQL
- PHP数据处理基本校验
- [Matlab]中pcolor和colormap的使用
- java 数学公式解析_JAVA 文本表达式解析成数学公式,计算出结果
- configure: error: Library requirements (libpcre >= 7.8) not met