Как просмотреть все активные темы в приложении для iPad - PullRequest
12 голосов
/ 15 июня 2011

В приложении для iPad, которое я создаю, я пытаюсь обработать неперехваченные исключения путем вывода callStackSymbols исключения. Это можно сделать с помощью [NSException callStackSymbols]

Однако я бы хотел видеть callStackSymbols и во всех других активных потоках. Я знаю, что могу использовать [NSThread callStackSymbols] в любом потоке, но для этого мне нужно перебрать все активные потоки.

Возможно ли это?

Ответы [ 2 ]

24 голосов
/ 21 июня 2011

Это сложная область, как отметил Седате Чужой. Вам нужно будет реализовать свой собственный обход стека для извлечения трассировки стека из других активных потоков; Такие API, как backtrace (3) и + [NSThread callStackSymbols], будут создавать только обратную трассировку для текущего потока.

Поскольку я знаком с кодом PLCrashReporter, я просто буду использовать его для примеров:

Обратите внимание, что весь этот код немного необычен, так как он выполняется в обработчике сигналов и написан для обеспечения асинхронности; если вы не знакомы со сложностями, связанными с обработкой сигналов, это хорошая отправная точка: http://www.mikeash.com/pyblog/friday-qa-2011-04-01-signal-handling.html

Правильно реализовать подобные вещи - гигантская головная боль; Я действительно рекомендую вам использовать PLCrashReporter или один из продуктов, созданных на его основе ( QuincyKit , HockeyApp , Atlassian JMC и т. Д.).

4 голосов
/ 15 июня 2011

Это кажется чреватым опасностью, вдвойне, если вам нужно обратиться за помощью здесь.Могу ли я предложить PLCrashReporter ?Его перечисленные функции:

  • Реализован как полностью обработанный асинхронный обработчик сигнала в процессе.
  • Не мешает отладке в gdb
  • Обрабатывает обе необработанные цели-C исключения и фатальные сигналы (SIGSEGV, SIGBUS и т. Д.)
  • Предоставляются обратные следы для всех активных потоков. (выделение мое)
  • Предоставляет полное состояние регистра дляпотерпел крах поток.

Еще лучше, взгляните на QuincyKit , очень удобную оболочку для PLCrashReporter.

...