【发布时间】:2014-01-22 12:11:31
【问题描述】:
我正在尝试将简单的崩溃日志记录添加到我的适用于 Mac OS 和 Linux 的 C++ 应用程序中。我对backtrace_symbols 的输出不满意。我想采用 backtrace() 返回的任何内容并手动构建堆栈跟踪(带有符号名称)。怎么做?我找不到一个例子,甚至找不到 backtrace() 返回的具体内容的解释。
更新:找到 this 代码 sn-p,但它无法在 OS X 上编译。
【问题讨论】:
-
@n.m.:我认为它甚至没有改进的能力。撇开玩笑不谈,对于初学者来说,我想获得一个损坏的函数名称列表,而无需解析字符串。
-
@n.m.:另外,我看不出是哪个线程实际导致了信号,但我猜这是
backtrace本身的问题。 -
“不想解析字符串”有点像“不想加数字”。解析字符串是程序员的工作,没有办法绕过它。
-
@n.m.:太棒了。让我们获取一些数据,编译成人类可读的字符串,然后忘记我们最初拥有该数据并解析字符串以获取我们的信息片段。听起来完全像程序员一直在做的事情。
-
崩溃的线程(无效的操作码、总线错误、分段错误...)接收到信号。不是
backtrace的问题。
标签: c++ gcc stack-trace backtrace signal-handling