Ios NSThread callStackSymbols日志<;修订版>;象征

Ios NSThread callStackSymbols日志<;修订版>;象征,ios,debug-symbols,Ios,Debug Symbols,我试图调试一些并发代码,当我记录[NSThread callStackSymbols]时;控制台显示了我感兴趣的大多数符号 有没有办法在运行时解决这个问题?我已删除设备符号文件夹,但Xcode重新符号化似乎无法解决此问题 这里还有一些其他问题,但它们似乎都在试图解决崩溃文件中的问题 如何在调试控制台中查看框架符号的方法名称 我正在运行Xcode 5。您只会看到所有符号: 调试时 生成完整的崩溃报告并将其符号化时 使用atos和磁盘上相应的dSYM或系统符号手动对地址进行符号化(您需要为每个框架和

我试图调试一些并发代码,当我记录[NSThread callStackSymbols]时;控制台显示了我感兴趣的大多数符号

有没有办法在运行时解决这个问题?我已删除设备符号文件夹,但Xcode重新符号化似乎无法解决此问题

这里还有一些其他问题,但它们似乎都在试图解决崩溃文件中的问题

如何在调试控制台中查看框架符号的方法名称


我正在运行Xcode 5。

您只会看到所有符号:

  • 调试时
  • 生成完整的崩溃报告并将其符号化时
  • 使用atos和磁盘上相应的dSYM或系统符号手动对地址进行符号化(您需要为每个框架和二进制文件加载地址,这也是由于。只有
    callStackSymbols
    不会显示这些符号)。看
  • 符号是一个

    内存优化。
    符号名仅存储在磁盘上,这在每个进程中节省了一些物理内存和大量虚拟地址空间


    总而言之:您可以在运行时使用任何调用显示所有系统符号。相反,你需要创建一个完整的崩溃报告,让应用程序崩溃并分析其中的堆栈跟踪。

    如果你想用这种方式调试IPA,我认为唯一的方法是获得一个正确的堆栈跟踪(网上有一些关于如何用C实现的示例),然后用相关的dSYM对它们进行符号化。是的,我知道这一点,谢谢。我正在尝试调试不定期导致崩溃的问题。因此,我不能依赖崩溃报告或重新创建崩溃,因为崩溃并不总是被触发的,但NSManagedObjects正从不同的线程被错误地访问。我认为,您不必等待崩溃。IIRC,在好的ol'C中,有一些方法可以在运行时获得带有地址的堆栈跟踪。然后您可以手动(=编写脚本)将它们转换为符号。@VladimirGritsenko只有地址是不够的,请阅读下面我的答案@VladimirGritsenko[NSThread callStackSymbols];记录地址和符号。我在运行时得到这些经过编辑的符号。正如我所描述的,这是一些系统符号的预期结果,请参阅我从devForums发布的解释。我已经在答案中发布了相关部分。你想做的是不可能的!好的,谢谢:)当问题不总是导致崩溃时,这有点棘手。我的问题类似(iOS 9.3.x),但我看到的不是“”,而是我的符号,即使“存档”执行“临时”构建,并且在复制过程中删除调试符号,对于临时is
    。(该应用程序已交付beta tester,
    callStackSymbols
    已被NSLog()加载到控制台。有什么想法吗?谢谢!