windbg - 加载 .NET 2 或 .NET 4 时如何设置断点?

标签 windbg

有时我正在调试 .NET 应用程序,但我不知道它们是使用 .NET 2 还是 .NET 4。我想在 .NET 加载时插入,所以我这样做

sxe -c ".echo .NET4 loaded" ld clr
sxe -c ".echo .NET2 loaded" ld mscorwks

不幸的是只能有一个这样的断点,在上面的例子中,mscorwks覆盖 clr在 .NET4 的情况下,它不会命中断点。

有没有办法中断多个不同的加载事件?

我真的不想摆弄我无法理解的非工作尝试
sxe -c".foreach /ps 5 /pS 99 (token {.lastevent}) {.if ($spat(\"[0-9a-z.:\\]*\\clr.dll\",\"${token}\")) {.echo clr;} .elsif ($spat(\".*\mscorwks.dll\",\"${token}\")) {.echo mscorwks} .else {}}" ld

最佳答案

可以设置两个断点

bu mscorwks!EEStartup

bu clr!EEStartup

(例如 bu clr!EEStartup “.echo 在加载 clr 时进入调试器”)
只有其中之一会起作用

关于windbg - 加载 .NET 2 或 .NET 4 时如何设置断点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21080643/

相关文章:

windows - 我如何学习 WinDbg? (关于 : seemingly simple hung process)

首次运行时 sos.threads 中的 windbg 异常

.net - 未加载 ngen-ed 程序集的符号

c++ - 查找仅在性能测试下发生的堆损坏的最佳方法是什么?

c# - 如何诊断混合托管/非托管 x32 .NET 应用程序中损坏的后缀模式

c# - 了解 WinDbg 输出

c# - 使用 windbg 检测挂起的 C# 应用程序中的死锁

c# - .NET 线程如何等待不属于任何线程的 syncblk?

debugging - WinDbg环境变量

windows - 在 Windows Crypto API 中跟踪 CSP 调用