使用Windbg 调试.Net程序

一直都在使用.netWindows FormsWPF方面的开发,最近正在读 CLR via C#,初识.net核心的一些东东。又由看了熊力blog上用Windbg 调试分析WPF的的一些文章。

感觉Windbg这个东西还是不太容易上手的,关键是需要配置好一些东西和知道一些常用的指令。

下面就从安装Windbg开始说起。

使用windbg,首先要到微软网站上下载最先的windbg程序。网址是:http://www.microsoft.com/whdc/DevTools/Debugging/default.mspx

安装后就可以在开始菜单找到windbg了。

要先调试.net的程序,需要使用一个扩展的dll,它在C:/WINDOWS/Microsoft.NET/Framework/v2.0.50727路径下,文件名是sos.dll。有了它我们才能运行命令(!clrstack),拷贝一份到Windbg.exe所在的目录。

另一个关键就是调试所需的符号文件Symbol File。参考微软官网:

具体链接是:http://www.microsoft.com/whdc/devtools/debugging/debugstart.mspx#a

我们需要连接微软的symbol服务器:在Windbg File菜单下,Symbol File Path中加入这一项,

srv*c:/symbolcache*http://msdl.microsoft.com/download/symbols;

另外就是你所编写的程序的符号文件,它应该在debug目录下,扩展名是pdb的文件,把这个路径也加进来。

这样准备工作就做好了。

运行你要调试的.net程序,切换到Windbg,F6,出现附加进程对话框。在最下面可以找到你刚启动的程序的进程,OK

如果是第一次用的话,会需要从微软服务器上下载很多.pdb符号文件,好几十M,需要等待一些时间,尤其是如果网速不好的话。

这时,在Windbg界面的最下面会出现一个命令输入行,我们首先将sos.dll扩展加进来。

输入:.load sos.dll

确保符号文件路径已重新加载:输入:.reload

这时我们就都准备好,可以开始调试了!

输入:~,可以查看当前程序的所有线程。回显中最前面的一列是线程的编号,在输入提示符前面的0001>表示当前的线程是1号线程。使用k命令可以显示当前线程的Stack Backtrace

要切换到其他的线程,输入~2s,表示切换到线程2

对于.net的托管线程,我们可以使用命令!threads查看,切换到启动的托管线程STA才能使用!clrstack命令查看。一般要切换到线程0,即输入~0s,再输入!clrstack

本人也是刚刚开始使用windbg,难免会有很多错误,希望和大家多多交流。

转载于:https://www.cnblogs.com/oyjj/archive/2009/04/21/2133006.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
回答: 使用Windbg调试dump文件的步骤如下: 1. 首先,确保你已经安装了WindbgWindbg通常在安装Visual Studio时一同安装,你可以在安装目录中搜索windbg.exe来确认是否已安装\[1\]。 2. 配置符号文件目录。符号文件是用于将内存地址转换为可读的函数名和行号的文件。你可以从微软的服务器上下载符号文件。在系统环境变量中设置_NT_SYMBOL_PATH变量,指定符号文件的目录\[2\]。 3. 打开Windbg,选择"File"菜单,然后选择"Open Crash Dump"。浏览并选择你要调试的dump文件。 4. 在Windbg的命令行中,输入"!analyze -v"命令,以获取有关dump文件的详细分析报告。这将帮助你了解导致崩溃的原因。 5. 根据分析报告中的信息,你可以使用Windbg的其他命令来进一步调试程序。例如,你可以使用"lm"命令查看加载的模块,使用"kb"命令查看调用堆栈等。 6. 如果你需要附加到正在运行的进程进行调试,可以使用Windbg的"Attach to Process"选项。这对于调试偶发性问题非常有用\[3\]。 希望这些步骤对你有帮助! #### 引用[.reference_title] - *1* *2* [Windows下关于windbg 调试 dump文件过程的环境配置以及注意事项](https://blog.csdn.net/qq_37059136/article/details/129746624)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Windbg调试dump文件](https://blog.csdn.net/bigger_belief/article/details/124476879)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值