我是否可以在不附加VS调试器的情况下从CLR异常中获取堆栈跟踪?

时间:2012-08-03 21:13:31

标签: .net debugging iis-6 windbg

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

WinDbg是可行的方式,还是有另一种方式,还是因为没有足够的日志而搞砸了?

1 个答案:

答案 0 :(得分:17)

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

.symfix
sxe clr
sxd av
.loadby sos clr
g

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

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

然后你可以使用像!pe这样的SOS命令来打印异常类型,!ClrStack来转储堆栈,!dso来转储堆栈中的托管对象等。

编辑:我在sxesxd命令中输入了拼写错误。感谢@MStodd注意到这一点。