【问题标题】:How to print exception stack trace of Objective-C exceptions with GNU runtime and without GNUStep?如何在 GNU 运行时和没有 GNUStep 的情况下打印 Objective-C 异常的异常堆栈跟踪?
【发布时间】:2010-09-06 11:52:07
【问题描述】:

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

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

如何实现?

【问题讨论】:

    标签: objective-c exception stack-trace printstacktrace


    【解决方案1】:
      NSArray * stack = [NSThread callStackSymbols];
    

    这可能会有所帮助。

    【讨论】:

    • 如你所见,我需要 no 特定的基础(如 Cocoa 或 GNUStep)。
    【解决方案2】:

    由于没有更多的知识浮现,以下是我自己发现的:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-26
      • 2012-09-04
      • 2011-01-18
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      相关资源
      最近更新 更多