编写WinDBG脚本,使其在每次调用堆栈中断时接受调用堆栈,然后继续(未处理的ex,或被调试对象说debug.break())
我们正在运行一个应用程序,恰巧是我们编写的web服务器,我们只是在生产中说了一些令人讨厌的问题,所以在大约12个小时内,我们将把它放在WinDBG下,并在每次出现故障时接受调用堆栈 有时它会因为一个未处理的异常而中断,有时我们会点击一个断言,这时我们的代码会说如果在调试器下运行,则中断 有没有可能以这样一种方式连接到WinDBG:一旦WinDBG断开,它就会接受一个调用堆栈,并立即移动?试试看编写WinDBG脚本,使其在每次调用堆栈中断时接受调用堆栈,然后继续(未处理的ex,或被调试对象说debug.break()),windbg,Windbg,我们正在运行一个应用程序,恰巧是我们编写的web服务器,我们只是在生产中说了一些令人讨厌的问题,所以在大约12个小时内,我们将把它放在WinDBG下,并在每次出现故障时接受调用堆栈 有时它会因为一个未处理的异常而中断,有时我们会点击一个断言,这时我们的代码会说如果在调试器下运行,则中断 有没有可能以这样一种方式连接到WinDBG:一旦WinDBG断开,它就会接受一个调用堆栈,并立即移动?试试看 sxe -c "kb;g" -h wkd 及 在windbg的帮助文档中搜索控制异常和事件以获取更多
sxe -c "kb;g" -h wkd
及
在windbg的帮助文档中搜索控制异常和事件以获取更多相关信息。将调试器附加到生产框可能会带来灾难性后果,(a)性能(b)调试器意外中断 为了安全起见,一定要确保禁用所有不关心或不想闯入调试器的异常
sxd *
然后,选择你想以某种方式处理的(使用callstack,然后继续)
第一个是断点异常处理程序、断言失败和C++ EH异常。 调试器支持的内容有很多,例如,如果加载SOS.dll(WinDBG的CLR扩展名),则可以
sxe -c "kb;g" clr
有关可能筛选的异常/事件类型的权威信息,请参阅WinDbg帮助(搜索sxe)
sxe -c "kb;g" bpe
sxe -c "kb;g" asrt
sxe -c "kb;g" eh
sxe -c "kb;g" clr