Как напечатать трассировку стека исключений исключений Objective-C во время выполнения GNU и без GNUStep? - PullRequest
2 голосов
/ 06 сентября 2010

У меня есть сборка приложения Objective-C в Linux с GCC 4.3, использующая нет специфическую среду (только GNU-runtime).Я использую исключения Objective-C (с помощью флага компилятора -fobjc-exceptions).

Теперь я хочу напечатать трассировку стека такого исключения, когда я его обнаружил.Или что сделало бы меня еще более счастливым: поместите трассировку в строку или какую-либо структуру, чтобы оценить или напечатать ее позже.

Как этого достичь?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2010

Поскольку знания больше не плавают, вот что я обнаружил сам:

По крайней мере, в Linux я могу использовать расширения GNU backtrace и backtrace_symbols для получения адресов стека вызовов и соответствующих символов. Это немного помогает, но далеко от информации, которую дает GDB. Нет ни номеров строк, ни значений аргументов.

С расширением glibc dladdr Я могу получить похожую информацию, но не дальше.

Это все еще не совсем то, что я ищу, но никто не получил такой оговорки - поэтому я бы принял свой собственный ответ: (.

0 голосов
/ 15 сентября 2010
  NSArray * stack = [NSThread callStackSymbols];

Это может помочь.

...