如何在VS2017中使用C ++获取异常跟踪堆栈

时间:2017-08-11 07:16:30

标签: c++ exception visual-studio-2017

当遇到异常时,行上只有一个断点抛出异常,因为它是库中非常疯狂的方法,我想知道破坏异常的确切调用堆栈,可以用Java / Python等其他语言很容易地做到这一点......

如何使用VS2017 C ++做到这一点?或者有办法做到这一点吗?

enter image description here

1 个答案:

答案 0 :(得分:0)

虽然不能直接回答您的问题,但我想指出的是,您可以使用跨平台的方式获得很好的回溯记录,仅使用标准C ++ 11 即可,而无需调试器或繁琐的日志记录:

使用std::nested_exceptionstd::throw_with_nested

它在StackOverflow herehere上进行了介绍,如何通过简单地编写适当的异常处理程序(将其重新抛出嵌套)来在代码内对异常进行回溯例外情况。 但是,它将要求您在要跟踪的函数中插入try/catch语句。

由于您可以使用任何派生的异常类执行此操作,因此可以向此类回溯中添加很多信息! 您还可以看看我的MWE on GitHub或我的"trace" library,其中的回溯看起来像这样:

Library API: Exception caught in function 'api_function'
Backtrace:
~/Git/mwe-cpp-exception/src/detail/Library.cpp:17 : library_function failed
~/Git/mwe-cpp-exception/src/detail/Library.cpp:13 : could not open file "nonexistent.txt"