Info.plist file processing modifies executable

2019-09-14 08:20发布

问题:

I've been working on an iPhone application had an issue where dSYM file generation was seg faulting on me.

GenerateDSYMFile /Users/kaom/Projects/build/Release-iphoneos/NodeAppGen.app.dSYM /Users/kaom/Projects/build/Release-iphoneos/NodeAppGen.app/NodeAppGen cd /Users/kaom/Projects/Apps/NodeAppGen setenv PATH "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin" /Developer/usr/bin/dsymutil /Users/kaom/Projects/build/Release-iphoneos/NodeAppGen.app/NodeAppGen -o /Users/kaom/Projects/build/Release-iphoneos/NodeAppGen.app.dSYM

Command /Developer/usr/bin/dsymutil failed with exit code 11

I tracked this bug down to an error in the application's Info.plist file.

Instead of

<key>CFBundleVersion</key>
<string>1.0</string>

I had

<key>CFBundleVersion</key>
<real>1.0</real>

To my knowledge, dSYM file generation is only dependent on the executable and the plist file should not affect the executable. So my question is why did this break dSYM file generation?

回答1:

Look for an error earlier in the build log, possibly one that didn't actually get parsed out as an explicit error by Xcode.

More likely than not, something was chomping on the Info.plist and was mighty confused to find a <real/> instead of a <string/> value.

In any case, file a bug via http://bugreport.applec.om, as having the dev tools produce a useful error message is always desirable.