代码之家  ›  专栏  ›  技术社区  ›  Tilo Prütz

如何在GNU运行时和不使用GNUSTEP的情况下打印Objective-C异常的异常堆栈跟踪?

  •  2
  • Tilo Prütz  · 技术社区  · 15 年前

    我有一个基于Linux的Objective-C应用程序,GCC4.3使用 特定框架(仅GNU运行时)。我正在使用Objective-C异常(通过'-fobjc exceptions'编译器标志)。

    现在我想打印这样一个异常的堆栈跟踪,当我捕获一些异常时。 或者是什么让我更高兴:把跟踪放在一个字符串或某种结构中,以便稍后对其进行评估或打印。

    怎样才能做到?

    2 回复  |  直到 15 年前
        1
  •  0
  •   icespace    15 年前
      NSArray * stack = [NSThread callStackSymbols];
    

    也许有帮助。

        2
  •  0
  •   Tilo Prütz    15 年前

    因为没有更多的知识在流动,我自己发现的是:

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

    带glibc扩展 dladdr 我可以得到类似的信息,但不能再进一步。

    这仍然不是我想要的,但是没有人得到这样的条款,所以我会接受我自己的答案:(。