当应用程序在iOS中运行时,我需要查找所有stacktrace。我使用过Thread.callStackSymbols,但是它只为该特定线程提供堆栈符号,而不为其他线程提供
。答案 0 :(得分:0)
实际上,您要执行的任务非常复杂。
您必须实现自己的堆栈遍历逻辑,才能从其他线程获取堆栈跟踪,因为Thread.callStackSymbols将仅返回当前线程的堆栈跟踪。
我建议您查看PLCrashReporter
源代码,尤其是FrameWalker
部分。
简而言之,步骤是:
通过task_threads()
函数获取线程列表:https://opensource.plausible.coop/stash/projects/PLCR/repos/plcrashreporter/browse/Source/PLCrashLogWriter.m?at=refs%2Ftags%2F1.0#694
通过thread_get_state()
函数获取线程状态:
https://opensource.plausible.coop/src/projects/PLCR/repos/plcrashreporter/browse/Source/PLCrashFrameWalker_arm.c?at=refs%2Ftags%2F1.0#73