WinDbg设置托管进程断点

Posted p_paul2008

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WinDbg设置托管进程断点相关的知识,希望对你有一定的参考价值。

    WinDbg的Live模式调试。.Net 托管代码 ,使用bp,bu,bm无法设置断点,也许是我不会。研究了下,托管代码有自己的命令,!BPMD 模块名 完全限定的方法名 

步骤:

1、查找进程PID,用WinDbg,Attach上

2、使用反编译工具(IL),查找需要断点的方法名,需要完全限定名。

3、根据名称,使用!name2ee  也可找到方法的完全限定名。 

4、使用!BPMD 模块名 完全限定的方法名 设置断点。这是托管代码设置断点命令。设置完成后,显示Found 1 methods in module xxx 就设置成功。

5、继续执行程序。等待断点进入。进入后,通过!CLRStack -p查看参数即可。

 

退出,而不结束进程,使用.detach命令

 

=================另一种方法打入断点,更新日期2017-08-11==================

仅使用WinDbg,不是用反射工具,从外到里,一层层查看。
1、先DumpDomain出来。  !DumpDomain 导出Domain下每个Module
2、然后DumpModule下的所有类。!DumpModule -mt 00007ffdb2d277a0 导出此Module的所有类
3、找到指定类,Dump出所有Method。!DumpMT -MD /d 00007ffdb2d288f8 导出此类的所有方法
4、打断点。!BPMD -md MethodDesc 打入断点,参数为MethodDesc地址
bl 可列出有效断点
bc * 可清除所有断点
bc N 可清除指定断点

 

 

WinDbg调试高内存的.Net进程Dump

以上是关于WinDbg设置托管进程断点的主要内容,如果未能解决你的问题,请参考以下文章

在 WinDBG 中使用源代码行号设置断点

在windbg中的COM类方法上设置断点

转: windbg-跳过初始断点(调试技巧)

windbg断点命中时,其它线程在运行吗

windbg 调试lsass.exe 记录

(转)调试程序时设置断点的原理