1
3
除非应用程序以调试模式部署,否则无法获得准确的代码行。如果是这样的话,我相信它会显示在!调用堆栈。 |
2
3
这是一个困难的问题,可能需要走出只受管理调试的舒适区。 您要做的是为函数映射IL myclass.foo.dosomestuffhinhere.我的课是.foo.dosomestuffinhere 去分解那个功能。下面的示例是x86,但是x64可以遵循相同的步骤。 这在下面的链接中被引用。 Debugging Unexpected Process Termination 白皮书中的示例文本: 在托管堆栈中, debugging.unexpected.btnta_单击 … 查看debugging.unexpected.btnsta_ck事件中的代码。
如果源代码不可用,则可以通过向调用堆栈帧提供指令指针来检查程序集。 !U命令 . 可以从中检索指令指针!clrstack:输出。
要分解此函数,请键入 !U03A00 E06 .
好吧,现在怎么样?
还有,你可以跑!IP2MD 03A00 E06 获取methodDesc,然后运行 !垃圾堆 检查IL代码是否更容易。 您可以计算 system.io.file.move(系统.io.file.move) 在 !U输出 然后在IL中倒数相同的数字。然后,您可以使用.NET Reflector分解该方法,并将C_映射到IL,并比较结果。 很多步骤,但它会让你得到相同的结果:—) 谢谢, 亚伦 |
A.Pet · 回收时将调试器附加到应用程序池 7 年前 |
Dominique · 如何避免将DbgCommand命令写入日志文件 7 年前 |
Ralph Erdt · WinDBG显示不完整堆栈 7 年前 |
NoBrassRing · Windbg快捷方式将EIP设置为源行 8 年前 |
Ghita · Windows堆分配调用堆栈-奇怪的调用堆栈 10 年前 |