10

我有一个在远程服务器上运行的网站,并希望从正在发生的异常中获取一些信息。我无法安装VS或使用远程调试,并且一直在尝试使用各种版本的WinDbg,但收效甚微。在我的本地测试中,我可以让 WinDbg 中断 C++ 异常或我抛出的 CLR 异常,但无法获得比“抛出某些东西”更多的信息。

WinDbg 是要走的路,还是有另一种方法,或者我因为没有足够的日志记录而搞砸了?

4

1 回答 1

19

将 WinDbg 附加到进程,然后输入以下命令:

.symfix
sxe clr
sxd av
.loadby sos clr
g

执行将继续(在 go 命令之后),并且只要抛出 CLR 异常(或任何其他未处理的异常)就会中断。每当它在 CLR 异常上中断时,您都会看到:

(xxxx.xxxx): CLR exception - code e0434352 (first chance)

然后您可以使用 SOS 命令!pe,例如打印异常类型、!ClrStack转储堆栈、转储堆栈!dso中的托管对象等。

编辑:我有错别字sxesxd命令。感谢@MStodd 注意到这一点。

于 2012-08-03T21:43:04.103 回答