用于在运行时记录调用堆栈的库(Windows/Linux)
Library for logging Call Stack at runtime (Windows/Linux)
我需要一种在调试日志中记录函数堆栈跟踪的方法来帮助我诊断缺陷。问题是我需要在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)中找到
相关文章:
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 在Linux for Windows上编译C++代码时出错
- 在Linux和C++中的Windows上,散列字符串值会产生不同的输出
- 函数在Windows或Linux上运行时表现不同
- 如何在CPP中创建应该在Windows和Linux上运行的套接字?
- CMake WxWidgets项目成功地在Linux上构建,但没有在Windows上构建
- 声明C++具有动态大小的数组类型在 Linux 中工作正常,但不能在 Windows 中工作
- 如何在 Linux for Windows 上通过 MinGW 构建静态 ICU 的 Boost
- 在Linux上使用Clang / OLLVM交叉编译helloworld Windows可执行文件时的问题
- 分段 Linux Ubuntu 中的 g++ 错误,但在 Windows 中的 g++/MingW 中,在 C++ 中打
- 在 Linux 群集上运行 Windows C++代码
- Windows 和 Linux 之间的相对路径分辨率差异?
- 将 Genteruse 从 Linux 转换为 Windows
- g++ 9.2.1 (Linux) 会导致 seg 错误,但 Windows 上的代码块不会
- 绕过 Windows 中的 __declspec(dllimport) 到 Linux 项目的转换
- Google Play游戏服务可以用于PC游戏吗?(Windows/Linux/OSX)
- 用于在运行时记录调用堆栈的库(Windows/Linux)
- (clang / llvm-mc / lld) hello world (x86-64 Windows & Linux)
- 使用Qt(Windows/Linux)从远程目标获取ping
- Windows Linux c++ 编译问题:"no matching function for call"