簡體   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