如果方法没有被jitted,如何添加断点

时间:2012-01-04 16:57:36

标签: c# windbg breakpoints sos

我有一个应用MyApp.exe。此应用使用程序集MyAssembly1.dll,它自身引用MyAssembly2.dll。在MyAssembly2内,我有一个类MyClass,其方法为MyMethod。用户经过多个对话框等后调用此方法。

如果我从Windbg中启动此应用程序,是否有某种方法可以在此方法上设置断点?问题是我不知道CLR何时加载MyAssembly2 这个方法得到了JITted?

2 个答案:

答案 0 :(得分:4)

关于BPMD msdn的文档说

  

如果尚未加载指定的模块和方法,则此命令会在创建断点之前等待加载模块和实时(JIT)编译的通知。

所以你应该可以做到!bpmd MyAssembly2.dll MyClass.MyMethod即使MyAssembly2.dll尚未加载,加载调试器时也会放入断点。

答案 1 :(得分:1)

您也可以运行!sosex.mbm,或者,如果您知道源文件/行号,请执行!sosex.mbp。您甚至可以在初始断点处运行这些命令。没有必要等待加载CLR。 SOSEX将处理必要的通知,以便在jitted代码可用时设置断点。

SOSEX在http://www.stevestechspot.com

免费