繁体   English   中英

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

[英]How to get exception trace stack with C++ in VS2017

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

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

在此处输入图片说明

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

使用std::nested_exceptionstd::throw_with_nested

此处此处的StackOverflow 上进行描述,您可以通过简单地编写将重新抛出嵌套异常的适当异常处理程序来获取代码中异常的回溯 但是,它要求您在要跟踪的函数中插入try/catch语句。

由于您可以使用任何派生的异常类来执行此操作,因此您可以向此类回溯添加大量信息! 您还可以查看我在 GitHub 上的 MWE或我的“跟踪”库,其中的回溯如下所示:

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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM