无法使用 Boost stacktrace + backtrace 获取行号
Failing to get line numbers with Boost stacktrace + backtrace
我正在尝试重现 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
。)我正在使用我在 Devuan 3.0 GNU/Linux 上构建的 Boost 1.73.0。 libbacktrace 已安装(它是 glibc 的一部分),我正在链接它。
这更有可能是我做错了什么,还是库中的实际错误?
要在堆栈轨道中获取更多信息,请使用调试版本。
对于 GCC 编译带有标志 -g
或 -fno-omit-frame-pointer
.
的项目
我正在尝试重现 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
。)我正在使用我在 Devuan 3.0 GNU/Linux 上构建的 Boost 1.73.0。 libbacktrace 已安装(它是 glibc 的一部分),我正在链接它。
这更有可能是我做错了什么,还是库中的实际错误?
要在堆栈轨道中获取更多信息,请使用调试版本。
对于 GCC 编译带有标志 -g
或 -fno-omit-frame-pointer
.