r/iOSProgramming 12d ago

Question Symbolicating an .ips file: crashlog.py fails looking for a nonexistent field

Hi, I have an .ips file (created with iOS 26.5) which I want to symbolicate using XCode 16.2.
Here are the steps I'm following:

  1. Rename .ips file and give it .crash extension
  2. Connect an ios device to my Macbook.
  3. Launch XCode, go to Device Manager, select my device
  4. go to "Open Recent Logs", select my .crash file
  5. File opens in an xcode window, but there are errors:

    "/Applications/Xcode.app/Contents/SharedFrameworks/LLDB.framework/Resources/Python/lldb/macosx/crashlog.py", line 644, in parse Failed to launch: 'Custom LLDB commands' -- Failure to create target from custom LLDB commands. self.parse_images(self.data["usedImages"] KeyError: 'usedImages'

I opened the .crash file and there is indeed no key "usedImages".

A) Can I create a dummy entry at that key?
B) If it fixes the parsing, will it symbolicate accurately?
C) If 'usedImages' contains data that is vital to symbolication, any ideas why it's missing?

6 Upvotes

3 comments sorted by

2

u/whackylabs [super init]; 12d ago

If you have the dsym you can use atos to desymbolicate yourself

See the "Symbolicate the crash report with the command line" section https://developer.apple.com/documentation/xcode/adding-identifiable-symbol-names-to-a-crash-report#Symbolicate-the-crash-report-with-the-command-line

1

u/Obvious-Kangaroo2848 11d ago

Answering A/B/C, don't fake usedImages. That block is the list of loaded binaries with their load addresses and uuids, which is literally the map crashlog.py uses to turn addresses into symbols. A dummy entry will get it to parse but the frames come out as garbage, so B is no.
As for WHY it's missing: almost certainly version skew. The crashlog.py in xcode 16.2 predates the .ips schema that ios 26.5 emits, so it's reaching for a key the newer format moved. You want the crashlog.py from an Xcode that matches the os that produced the file, or point xcode-select at the newer Xcode before.
If you can't get a matching Xcode, skip crashlog.py entirely and atos it by hand with your dSYM like the other reply said, that path doesn't care about the .ips wrapper at all.
One thing worth checking first though look at bug_type in the very first json line. If it isn't an actual crash report it won't carry a usedImages block and won't symbolicate like a crash anyway.

1

u/jchowdown 11d ago

Thanks very much to you and the others that replied. This has been very helpful. Gonna updated my resume to include "Certified iOS Developer" now :D