使用 <stacktrace> 库构建 C++23

c++23 building with <stacktrace> library

提问人:Hedgehog 提问时间:11/7/2023 最后编辑:Hedgehog 更新时间:11/7/2023 访问量:72

问:

我正在尝试使用我的 c++ 项目中的“stacktrace”库。https://en.cppreference.com/w/cpp/header/stacktrace

我正在使用 GCC 13 和 CPP 标准 23。

在我的 cmake 文件中,我正在添加target_link_libraries([Target] stdc++_libbacktrace)

如果我编译,我会收到以下错误。

compile_utils.cpp:10:34: error: ‘std::stacktrace’ has not been declared
   10 |     const auto stacktrace = std::stacktrace::current();

我还试图通过以下方式启用以下标志,但随后出现以下 cmake 构建错误set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} --enable-libstdcxx-backtrace")cc1plus: error: unknown pass libstdcxx-backtrace specified in ‘-fenable’

如何解决上述错误?

谢谢!

用法

#include <stacktrace>

void test()
{
    const auto stacktrace = std::stacktrace::current();
    const auto strStackTrace = stacktrace.to_string();    
}

以防万一,使用"Ubuntu 22.04.3 LTS"

以防万一,也尝试过,但没有运气target_link_libraries([Target] stdc++exp)

https://gcc.gnu.org/onlinedocs/gcc-13.2.0/libstdc++/manual/manual/using.html#manual.intro.using.flags

C GCC G++ 堆栈跟踪 C++23

评论

0赞 kiner_shah 11/7/2023
您包含堆栈跟踪标头,对吗?
1赞 Hedgehog 11/7/2023
@kiner_shah是的,上面添加了代码片段
1赞 kiner_shah 11/7/2023
根据这篇文章,您的编译器需要使用该 enable-libstdcxx-backtrace 标志构建。请注意编译器,而不是程序。
1赞 Hedgehog 11/7/2023
@kiner_shah啊......编译器。。。呸。。我看到了那篇帖子,但没有阅读它的编译器构建标志。

答: 暂无答案