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

Library for logging Call Stack at runtime (Windows/Linux)

本文关键字:Windows Linux 运行时 记录 调用 堆栈 用于      更新时间:2023-10-16

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

经过一番调查,我发现:

  • 对于Windows实现,我可以使用StackWalk64 API函数和家族。
  • 在Linux下,我发现libwind听起来很棒。或者,我可以使用glibc的backtrace

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

Google Breakpad为您处理所有这些,如果您想从现场获得崩溃转储。

我写了两篇关于这个主题的文章,包括谷歌的breakpad以及一个非常薄的自己写的方法,适用于windows和linux:

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

事后调试重访- http://drdobbs.com/architecture-and-design/227900186

几年前我写过:http://drdobbs.com/cpp/191100567

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

框架的更新版本可以在库Imebra (http://imebra.com)中找到