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

ima*_*mak 0 c# windbg breakpoints sos

我有一个申请MyApp.exeMyAssembly1.dll此应用程序使用本身引用的程序集MyAssembly2.dll。在其中MyAssembly2,我有一个MyClass有方法的类MyMethod。在用户经历几个对话框等之后调用此方法。

如果我从 Windbg 中启动此应用程序,是否可以通过某种方式在此方法上放置断点?问题是我不知道MyAssembly2CLR 何时加载该方法并且该方法得到 JITted?

小智 5

BPMD 的msdn文档说

如果指定的模块和方法尚未加载,则此命令将等待模块已加载并进行即时 (JIT) 编译的通知,然后再创建断点。

因此,即使尚未加载 MyAssembly2.dll,您也应该能够执行 !bpmd MyAssembly2.dll MyClass.MyMethod,并且在加载时调试器将放入断点。

  • 这也是我对 !bpmd 的理解。然而,断点似乎没有被击中,尽管当我添加断点时,我得到“正在添加挂起的断点...”。不确定我是否做错了什么 (2认同)