用于在运行时记录调用堆栈的库(Windows / Linux)

时间:2011-10-03 06:59:02

标签: c++ windows linux debugging

我需要一种在调试日志中记录功能堆栈跟踪的方法来帮助我诊断缺陷。问题是我需要使用C ++在Windows和Linux上实现它。

经过一番研究后,我发现:

  • 对于Windows实现,我可以使用StackWalk64 API函数和系列。
  • 在Linux下,我发现libunwind听起来不错。
  • 或者,我可以使用glibc的backtrace

在开始工作之前,我想要一些建议,如果这是正确的方法,并询问是否有一个已经编写的多平台库可以提供帮助。我怀疑我不是第一个需要这个的程序员。 :)

3 个答案:

答案 0 :(得分:3)

如果你想从现场获得崩溃转储,

Google Breakpad会为你处理所有这些。

答案 1 :(得分:2)

我写了两篇关于这个主题的文章,包括Googles breakpad以及一个非常薄的自编写方法,适用于Windows和Linux:

事后调试 - http://drdobbs.com/tools/185300443

重新审视死后调试 - http://drdobbs.com/architecture-and-design/227900186

答案 2 :(得分:1)

几年前我写了这个:http://drdobbs.com/cpp/191100567

基本上,一些宏记录了抛出异常时堆栈展开的位置。

可以在Imebra库(http://imebra.com)

中找到该框架的更新版本