有时我正在调试 .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/