为什么throw位置不在backtrace / callstack中?

时间:2016-11-03 17:59:16

标签: c++ callstack backtrace

我试图让一个使用许多第三方库的大型跨平台项目更容易实现验尸生活。在Linux上,我使用backtrace()将backtrace / callstack转储到控制台。在Windows上,我使用EXCEPTION_POINTERS创建一个minidump和StalkWalker类来将callstack转储到控制台。现在,在Windows上注册了所有特定于平台的信号处理程序并启用了SEH,我会捕获并报告许多有用的信息,最重要的是,报告坏事发生的位置的文件和行号。但是,在callstack中,我注意到我实际上从未获得任何throw语句的位置,只是它被捕获的位置,即catch块。可以想象,如果您的try-catch包含大量的代码,那么捕获的异常并不是非常有用。那么,为什么呢?

现在针对明显的后续问题:如何将throw语句的位置放入我的callstack控制台转储中?

我会阻止任何试图告诉我将所有throw语句更改为包含__FILE____LINE__宏的自定义例外的人。请回头看我的开头句。因此,throw的当前用途不会改变。

0 个答案:

没有答案