Xcode项目不再在调用堆栈中显示符号

时间:2016-11-04 17:03:42

标签: xcode macos debug-symbols macos-sierra

我有一个带有单个Scheme的Xcode项目,除了在Debug配置中启动OS X应用程序之外别无其他。该应用程序不是由项目构建的,项目没有任何目标。 Xcode项目只是从Scheme启动应用程序。该应用程序最初是通过外部命令行构建脚本在调试模式下构建的,除主要可执行文件外还包含许多动态库(dylib)。

通过Xcode以这种方式启动应用程序后,如果应用程序被断言语句停止(或者只是手动暂停),则生成的调用堆栈只会显示地址指针。没有显示符号:

Unsybolicated call stack

但是,如果我强制断言继续,应用程序崩溃并生成完全符号化的崩溃报告,尽管应用程序发行版中的任何地方都没有dSYM文件。

[编辑]:此外,许多符号出现在调试器源代码编辑器的顶部,在堆栈中的许多(但可能不是全部)调用中显示:

rendersystemtest`CMaterialSystem2AppSystemDict::SetupMaterialSystem:
    rendersystemtest[0x1cfb99] <+1753>: movb   $0x1, -0x51(%rbp)
    rendersystemtest[0x1cfb9d] <+1757>: movq   0x85c4e4(%rip), %rax      ; (void *)0x0000000000000000
    rendersystemtest[0x1cfba4] <+1764>: movb   -0x51(%rbp), %cl
    rendersystemtest[0x1cfba7] <+1767>: movq   (%rax), %rax
    rendersystemtest[0x1cfbaa] <+1770>: cmpq   -0x8(%rbp), %rax
    rendersystemtest[0x1cfbae] <+1774>: movb   %cl, -0x101(%rbp)

因此,符号存在于某个地方,它们只是没有在UI调用堆栈中显示。

此外,缺少调用堆栈符号是最近的结果。以前,相同的可执行文件在断言暂停或停止时显示符号化的调用堆栈:

enter image description here

我的问题是:

  1. 什么可能导致Xcode停止在UI调用堆栈中显示符号?
  2. 如果符号可用于崩溃报告,为什么Xcode不能在UI调用堆栈中显示它们?
  3. [编辑]:为什么Xcode在调试器源代码编辑器中显示符号,而不是在调用堆栈本身中显示?
  4. [编辑2016-11-05] 经过进一步研究,这似乎是环境......可能与macOS Sierra的更新有关。运行El Capitan的类似MacBook上不会出现此问题。

    但仍然不知道根本原因是什么。任何意见都将不胜感激。

0 个答案:

没有答案