我正在尝试重现Boost Stacktrace文档中的第一个也是最简单的example。
#define BOOST_STACKTRACE_USE_BACKTRACE
#include <boost/stacktrace.hpp>
#include <iostream>
void bar(int n) {
if (n <= 0) {
// ... somewhere inside the `bar(int)` function that is called recursively:
std::cout << boost::stacktrace::stacktrace();
return;
}
bar(n-1);
}
int main() {
bar(4);
}并且我只获得了部分成功:我得到了函数名,但没有得到代码行:
0# bar(int) in ./plain_vanilla
1# bar(int) in ./plain_vanilla
2# bar(int) in ./plain_vanilla
3# bar(int) in ./plain_vanilla
4# bar(int) in ./plain_vanilla
5# main in ./plain_vanilla
6# __libc_start_main at ../csu/libc-start.c:342
7# _start in ./plain_vanilla(我的源文件名为plain_vanilla.cpp,可执行文件为plain_vanilla。)我使用的是Boost 1.73.0,它是我在Devuan 3.0 GNU/Linux上构建的。libbacktrace已安装(它是glibc的一部分),我正在链接它。
这是否更有可能是我做错了什么,或者是库中的一个真正的bug?
发布于 2020-07-19 04:12:58
要获取堆栈跟踪中的更多信息,请使用调试版本。对于GCC,使用-g或-fno-omit-frame-pointer标志编译一个项目。
https://stackoverflow.com/questions/62973197
复制相似问题