Objective c 如何在iPad应用程序中循环所有活动线程
在我正在创建的iPad应用程序中,我试图通过输出异常的CallStackSymbol来处理未捕获的异常。这可以通过Objective c 如何在iPad应用程序中循环所有活动线程,objective-c,multithreading,ios,callstack,Objective C,Multithreading,Ios,Callstack,在我正在创建的iPad应用程序中,我试图通过输出异常的CallStackSymbol来处理未捕获的异常。这可以通过[NSException callStackSymbols] 但是,我也希望能够在所有其他活动线程上看到callStackSymbols。我知道我可以在任何线程上使用[NSThread callStackSymbols],但我需要遍历所有活动线程才能这样做 这可能吗?这似乎充满了危险,如果你需要在这里寻求帮助,情况更是如此。我可以建议你吗?其特点如下: 实现为进程内完全异步安全的信
[NSException callStackSymbols]
但是,我也希望能够在所有其他活动线程上看到callStackSymbols。我知道我可以在任何线程上使用[NSThread callStackSymbols]
,但我需要遍历所有活动线程才能这样做
这可能吗?这似乎充满了危险,如果你需要在这里寻求帮助,情况更是如此。我可以建议你吗?其特点如下:
- 实现为进程内完全异步安全的信号处理程序
- 不干扰gdb中的调试
- 处理未捕获的Objective-C异常和致命信号(SIGSEGV、SIGBUS等)
- 为所有活动线程提供回溯。(我自己强调)
- 提供崩溃线程的完整寄存器状态
更好的是,看一看,一个非常方便的包装周围的PLCrashReporter 这是一个复杂的区域,正如稳重的外星人所指出的。您需要实现自己的堆栈遍历,以从其他活动线程检索堆栈跟踪;诸如回溯(3)和+[NSThread callStackSymbols]之类的API只会为当前线程生成回溯 由于我熟悉PLCrashReporter代码,因此我仅将其用作示例:
- 要获取线程列表,您需要使用:
- 获得线程列表后,可以通过以下方式获取线程状态:
- 使用线程状态,可以遍历目标堆栈:
正确实施这类事情是一件非常头痛的事情;我真的建议您使用PLCrashReporter,或者在它之上构建的一个产品(,,等等)。虽然这是一个很好的第三方解决方案,但我还是更愿意学习通过活动线程进行循环。即使你能为我指出正确的方向,我也会发现这更有用。Thx仅供参考;但是你能帮我回答相关的问题吗?谢谢你的指点;但是你能帮我回答相关的问题吗?多好的回答啊。链接到API。链接到示例代码。加油!