在異常時檢索堆疊追蹤:綜合指南
本指南解決了發生異常時顯示堆疊追蹤的常見需求。實現這一目標需要一種可移植的方法,允許用戶捕獲和共享追蹤以進行錯誤分析。
Andrew Grant 的解決方案
Andrew Grant 的解決方案在捕捉堆疊追蹤方面存在缺陷拋出函數(在GCC 下),因為單獨的throw 語句不能保留它。這會阻礙在 catch 處理程序中檢索必要的資訊。
自訂例外處理
一種可行的方法是建立一個自訂例外類別來捕捉此時的堆疊追蹤的拋出指令。這種方法確保了堆疊追蹤的保存和捕獲處理程序的可用性。
更新:有用的程式碼資源
- http://stacktrace.sourceforge.net:A用於擷取堆疊追蹤的綜合庫。
- [C 23 Stack Trace Library](https://en.cppreference.com/w/cpp/experimental/stacktrace):此功能在 C 23 中提出,提供標準化的堆疊追蹤處理。
- [Boost Stacktrace](https:// /www.boost.org/doc/libs/1_77_0/libs/stacktrace/doc/html/stacktrace.html):建議用於 C 23堆棧跟踪的參考實現
其他更新
-
2023 年7 月:審查了多個堆棧追蹤庫:
- C 23
- Boost Stacktrace
- 向後cpp
- cpptrace
2024 年8 月: P2490建議加入[[with_stacktrace]] 和std::stacktrace::from_current_exception 到 C 26,簡化了從捕獲的例外中檢索堆疊追蹤。 以上是如何可靠地從 C 中的異常中檢索堆疊追蹤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!