我想实现以下目标,但经过几天的审判,我仍然无法理解。 我正在使用C ++为 Windows CE 5.0 开发一个应用程序,我希望能够在崩溃(以编程方式)时将一个callstack转储到一个文件中。我已经知道如何获取callstack本身,问题是我不知道如何在发生崩溃时运行我自己的代码。 我尝试将我的代码放入catch块,但堆栈已经解开,所以没有运气。平台上提供了一些异常处理函数,但set_terminate()或set_unexpected()不捕获所有类型的异常。 该应用程序是单线程的,使用Windows Mobile 5.0 SDK R2。
答案 0 :(得分:1)
__try {
// stuff
} __except (DecideWhatToDo()) {
}
int DecideWhatToDo(void){
// Stack analysis here, should work with \EHsc and \EHa
// you could return EXCEPTION_CONTINUE_EXECUTION here so stack should not be unwound
return EXCEPTION_EXECUTE_HANDLER
}
其实我从未尝试过。你如何解释你的调用堆栈?那么找到错误是有用的吗?