【问题标题】:Failing to get line numbers with Boost stacktrace + backtrace无法使用 Boost stacktrace + backtrace 获取行号
【发布时间】:2020-07-18 19:58:14
【问题描述】:

我正在尝试重现 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 的一部分),我正在链接它。

这更有可能是我做错了什么,还是库中的实际错误?

【问题讨论】:

    标签: c++ boost stack-trace backtrace boost-stacktrace


    【解决方案1】:

    要在堆栈跟踪中获取更多信息,请使用调试版本。 对于 GCC,使用标志 -g-fno-omit-frame-pointer 编译项目。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      • 1970-01-01
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多