我刚开始玩Xcode 4,发现无论我如何在项目中设置调试符号,Instruments都拒绝显示与我的代码对应的堆栈跟踪项的源代码行。仅显示十六进制偏移量并将我的可执行文件标识为拥有模块。启用“源位置”也是一个空白。即使对于Xcode生成的骨架OpenGL ES项目(文件→新建→新建项目...→iOS→应用程序→OpenGL ES应用程序),也会发生这种情况。
此问题仅发生在Instruments中(到目前为止,我尝试过CPU和OpenGL跟踪)。 Gdb很好地选择了调试符号。
我是否必须做一些特别的工作来查看Instruments中堆栈跟踪的源代码,或者这是Xcode 4中的错误?
到目前为止,我已经:
Debug Information Format
从DWARF with dSYM File
更改为DWARF
。Strip Debug Symbols During Copy
从Yes
更改为No
。答案 0 :(得分:48)
其他答案是良好的长期修复。如果您不想等待Spotlight重建其索引并且只需要为一个Instruments会话获取符号,您可以要求Instruments指示当前会话。
dSYM
文件的目录。返回Instruments,导航到此目录,然后选择dSYM
文件。最简单的方法是将dSYM
文件直接从Finder拖到Instruments中的“选择dSYM”对话框。答案 1 :(得分:44)
今天我遇到了这个问题并以这种方式解决了这个问题:
应该这样做。请注意,无论出于何种原因,构建目标都没有设置为与配置文件目标相同的构建配置,这使我绊倒了一两次。
答案 2 :(得分:3)
尝试为发布配置选择不同的代码签名身份,即配置配置文件。
答案 3 :(得分:2)
我发现了问题所在,因为我遇到了同样的问题。
答案来自:Missing symbol names when profiling IPhone application with Instruments
-g3
)。dsymutil
。这会生成一个dSYM软件包文件夹,当Spotlight编制索引时,必要的调试信息可供Instruments使用。
我认为,在你的情况下,Spotlight将事情编入索引需要一些时间 - 当它已经编入索引时,那么神奇地就会解决问题。
答案 4 :(得分:1)
刚刚开始工作;没有押韵或理由。
我花了最后半小时试图让它再次失败,希望在这里提供一个更有用的答案,但我不能,即使在从头开始重新创建骨架OpenGL程序后,回顾我的所有步骤。
我确实在emacs中打开了symbolicatecrash脚本(它已被其他地方牵连,这种问题),并且在我这样做之后就开始工作了。但我决不改变或保存它。
这是一个谜。
答案 5 :(得分:1)
没有符号的乐器的一个原因可能是Spotlight无法找到dSYM文件。因此,从DWARF with dSYM
到DWARF
的更改不是一个好主意。您应该更改它,因为没有dSYM文件,您无论如何都不会得到符号(至少对于Snow Leopard来说似乎是这种情况,我看到有些人也有没有dSYM文件的符号报告,但是,所有那些人正在使用Lion)。进行更改后,请确保创建一个干净的构建(有时Xcode无法在我的系统上为非干净构建生成dSYM文件)。
如果您仍然没有获得任何符号,则Spotlight数据库出现问题。尝试在构建后将包含dSYM文件的文件夹添加到文件夹列表中Spotlight不会编制索引,然后再从该列表中删除它。这会导致Spotlight重新索引文件。
如果这也没有帮助,可能您的Spotlight索引已完全损坏。在这种情况下,请在终端上尝试以下操作:
sudo mdutil -i off /
sudo mdutil -E /
sudo mdutil -i on /
这会导致Spotlight首先停止索引主硬盘驱动器,然后删除过去收集的所有索引数据,然后开始重新索引它。上面的行假设您的dSYM文件位于主硬盘驱动器上(而不是任何其他硬盘驱动器或网络卷,否则您必须用该卷的相应安装点替换'/')。在再次尝试之前,给Spotlight一些时间重新索引。
答案 6 :(得分:1)
在较新版本的Instruments(我有5.1.1 (55045)
)中,您可以添加其他路径以搜索dSYM和源代码
打开仪器的首选项,然后单击“dSYMs和路径”选项卡。
然后将您的路径添加到列表中。
答案 7 :(得分:0)
这是我的环境......
我在模拟器中运行时遇到了同样的问题,这让我感到疯狂,因为所有标准的固定设备都无法正常工作。
对我来说,将我的iPad插入MacBook并在我插入的iPad上运行与该应用程序的乐器会话。仪器在iPad上运行时正确地标记了我的应用程序,然后在我断开iPad并在模拟器中运行仪器后继续工作。
我怀疑它与更新项目以使用以下内容有关...
我不知道为什么会出现这种情况,但这是我在仪器中丢失符号之前所做的唯一项目变更。