gpt4 book ai didi

c++ - 处理 POSIX 信号 : how to get stack trace without using backtrace_symbols?

转载 作者:行者123 更新时间:2023-11-30 02:49:21 26 4
gpt4 key购买 nike

我正在尝试将简单的崩溃日志记录添加到我的 Mac OS 和 Linux 的 C++ 应用程序中。我对 backtrace_symbols 输出不满意。我想获取 backtrace() 返回的任何内容并手动构建堆栈跟踪(带有符号名称)。怎么做?我找不到一个示例,甚至找不到 backtrace() 返回的确切内容的解释。

更新:找到this代码片段,但它不能在 OS X 上编译。

最佳答案

libunwindunw_get_proc_name函数,它将为您提供堆栈帧的损坏函数名称。该文档声称 unw_get_proc_name 在信号处理程序中是安全的。根据this , backtrace_symbols 使用 malloc,因此是 not safe在 POSIX 信号处理程序中使用。

我不知道如何用任何回溯返回来调用它,所以你可能还需要为此使用 libunwind。

关于c++ - 处理 POSIX 信号 : how to get stack trace without using backtrace_symbols?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21282608/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com