2

我有一个使用 GCC 4.3 在 Linux 上构建的 Objective-C 应用程序,没有使用特定框架(仅 GNU 运行时)。我正在使用 Objective-C 异常(通过“-fobjc-exceptions”编译器标志)。

现在我想在捕获到一些异常时打印出这种异常的堆栈跟踪。或者什么会让我更开心:将跟踪放在一个字符串或某种结构中,以便稍后评估或打印它。

怎样才能做到这一点?

4

2 回答 2

0
  NSArray * stack = [NSThread callStackSymbols];

它可能会有所帮助。

于 2010-09-15T05:49:33.973 回答
0

由于没有更多的知识浮出水面,这是我自己发现的:

至少在 Linux 下,我可以使用 GNU 扩展backtracebacktrace_symbols获取调用堆栈的地址和相应的符号。这有点帮助,但与 gdb 提供的信息相去甚远。既没有行号也没有参数值。

使用 glibc 扩展dladdr,我可以获得类似的信息,但无法获得更多信息。

这仍然不是我正在寻找的东西,但没有人得到 so 条款 - 所以我会接受我自己的答案:(。

于 2010-09-15T09:33:20.773 回答