Windbg

使用windbg检测内存泄漏

缘起: 作为C++程序员,检测内存泄漏是非常痛苦的事情。尤其是看着程序的内存在一直增长,你却无能为力。此时,windbg可以用来检测内存泄漏。 配置windbg:  配置symbol文件路径: “SRV*d:symbols*http://msdl.microsoft.com/download/symbols”.  增加测试程序test.exe的pdb...

使用WinDBG调试OnDO Server

一、问题 在OnDo服务端和PJSIP客户端配置好IPv6,发现电话机可以向服务器注册成功,但使用话机A拨打话机B时,OnDo服务器返回500 (Server Internal Error) 错误。抓的包如下: 通过仔细对比与IPv4下INVITE的请求,没有发现明显差异。服务器的嫌疑比较大。 二、分析 要分析这个问题,首先需要定位服务器是何时发送500...

Windbg实用手册

Windbg工作中用的不多,所以命令老是记不住,每次使用都要重新查命令,挺烦。 趁这次培训的机会好好测试和总结了一下,下次再用就方便多了。 在这里一起共享一下,如果有错误,请指正。 基本知识和常用命令 (1) Windbg下载地址http://msdn.microsoft.com/en-us/windows/hardware/gg463009.aspx...

用windbg分析一个dead lock的问题

难得Winform项目中碰到dead lock,记录一下。 QA报告说,有时候晚上跑完自动化脚本,第二天早上来发现系统hang在屏保界面没反应,从日志看也没有报错。这种属于很少才会发生,也不知道怎么重现,但是很严重的bug,于是抓个dump来研究一下。 # Windbg加载dump文件后的一些文件信息 Microsoft (R) Windows Debu...

GDB和WinDbg中调用函数

GDB: 特别简单,直接写调用式子即可,如下图的p word.c_str(),其中word的类型是std::string WinDbg:目前都说是.call命令,说实话我宁愿不用。。。见: http://cfc.kizzx2.com/index.php/tutorial-using-windbg-to-call-arbitrary-functions-w...

利用WinDbg找出程序崩溃的代码行号

之前碰到论坛里有几个好友,说程序不时的崩溃,什么xxoo不能read的! 如果光要是这个内存地址,估计你会疯掉~~所以分享一下基本的调试技巧,需要准备的工具有WinDbg + VC6.0,下面是自己整理的一份自动生成DUMP文件的源代码,只需要添加到工程即可,源代码如下:MiniDump.hMiniDump.cpp<具体请参考附件SRC中,太大就不贴...

第二章排错的工具:调试器Windbg(上)

感谢博主 http://book.51cto.com/art/200711/59731.htm 《Windows用户态程序高效排错》第二章主要介绍用户态调试相关的知识和工具。本文主要讲了排错的工具:调试器Windbg。   第二章 汇编、异常、内存、同步和调试器——重要的知识点和神兵利器 这一部分主要介绍用户态调试相关的知识和工具。包括:汇编、异常(ex...

windbg 定位崩溃问题

三板斧如下: 使用windbg打开dump文件,设置好对应进程的 pdb 文件(这个很关键。为了避免releas优化导致符号文件错乱,我发布的所有                      release 版都是关闭代码优化的)。 在windbg的"edit"->"open/close log file"  设置log 路径 “d:a.log”...

windbg笔记

数据结构 Module EEClass MD(Method Desc) MT(Method desc Table) Object 基本命令 ~*e!clrstack 查看所有持有和等待锁的线程(的下一条要执行的代码) k 观察非托管堆栈 x <模块名>!*<函数名>* 查看符号 lm -f 显示已经载入的模块及其完整路径 sx...

windbg调试C#代码(一)

用windbg调试C#代码是比较麻烦的,因为windbg是针对OS层级的,而C#被CLR隔了一层,很多原生的命令如查看局部变量dv、查看变量类型dt等在CLR的环境中都不能用了。必须使用针对CLR的扩展命令,比如sos、psscor2中的命令。下面以一个最简单的WPF程序来说明调试的典型步骤,以及典型的坑。 1、用正确版本的windbg、加载正确版本的扩展...