【问题标题】:Is backtrace() - backtrace_symbols() availible for QNX?backtrace() - backtrace_symbols() 是否可用于 QNX?
【发布时间】:2017-10-14 19:16:43
【问题描述】:

我正在做一个 Qt 项目。以下是我的设置细节。 - Qt 版本:Qt 5.5.1(qnx) - 套件信息:6.6.0 armv7 QNX 的 Qt5.5.1 的静态 - 编译器:QNX 6.6.0 armv7 的 QCC - Qt Mkspec:qnx-armle-v7-qcc

我想做的是在我的项目中在运行时捕获 SIGSEGV 信号并在控制台本身打印回溯。我可以在 Linux 中使用 backtrace()/backtrace_symbols() 轻松获得回溯。但由于 QNX 中不存在“execinfo.h”文件,我无法使用 backtrace()/backtrace_symbols() 函数。

所以,我正在考虑下载“execinfo.h”文件并将其添加到我的项目中。而且我确信我也需要相应的库,但目前还不知道库名称。

有人可以评论关注吗? 1. “execinfo.h”文件对应的库是哪个? 2. 为了在 QNX 中使用 backtrace()/backtrace_symbols(),我需要获取/下载什么? 3.是否有任何替代方法可以在控制台本身打印回溯和符号 在 Qt/Qnx 项目中?

【问题讨论】:

  • #include <backtrace.h> 并链接到 libbacktrace。不要期望它在所有情况下都能正常工作,也不要期望 QNX 提供任何支持。

标签: c++ qt qnx


【解决方案1】:

当然,您可以尝试 libBacktrace.so,更具体地说是 bt_get_backtrace() API。以下是 QNX 6.6.0 的文档:

http://www.qnx.com/developers/docs/6.6.0_anm11_wf10/#com.qnx.doc.neutrino.lib_ref/topic/b/bt_get_backtrace.html

有一个关于 API 脆弱且不受支持的警告,因此请自行承担风险。

【讨论】:

    猜你喜欢
    • 2011-10-19
    • 2014-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 2020-06-09
    • 2010-12-17
    相关资源
    最近更新 更多