I am trying to symbolize an iOS crash report for which I do not have a dsym file. I know that I canβt get a beautiful filename: a symbolic string of the number, but Iβll find out where the failure in the code assembly section will be good enough.
To begin, consider the stack trace of a broken stream:
Thread 3 name: Dispatch queue: com.unity3d.WebOperationQueue :: NSOperation 0x1483250e0 (QOS: USER_INTERACTIVE)
Thread 3 Crashed:
0 myapp 0x0000000100ec4738 0x100080000 + 14960440
1 myapp 0x000000010120e0fc 0x100080000 + 18407676
2 myapp 0x00000001011d7e00 0x100080000 + 18185728
3 myapp 0x0000000100085cfc 0x100080000 + 23804
4 CFNetwork 0x0000000185027780 __65-[NSURLConnectionInternal _withConnectionAndDelegate:onlyActive:]_block_invoke + 80
...
I have a decrypted binary and verified uuid from crash report and binary matches. To manually indicate the address of the stack, I do this
atos -arch arm64 -o myapp -l 0x100080000 0x0000000100ec4738
and I get the output from the above command as
0x0000000100e44738 (in myapp) + 544
This is partially expected because I do not have a dsym file.
Please note that 0x0000000100e44738you can also get if you calculate
symbol address as = (slide + stack - load address)
slide 0x0000000100000000(found as vmaddr from otool -arch arm64 -l myapp | grep -B 3 -A 8 -m 2 "__TEXT")
so 0x0000000100000000 + 0x0000000100ec4738 - 0x100080000 = 0x100e44738 , , , atos.
, 0x100e44738 TEXT , , otool
otool -tvV myapp
.
myapp:
(__TEXT,__text) section
__ZNK5physx14NpSceneQueries10multiQueryINS_12PxRaycastHitEEEbRKNS_15MultiQueryInputERNS_13PxHitCallbackIT_EENS_7PxFlagsINS_9PxHitFlag4EnumEtEEPKNS_12PxQueryCacheERKNS_17PxQueryFilterDataEPNS_21PxQueryFilterCallbackEPNS_20BatchQueryFilterDataE:
0000000101262f40 stp x28, x27, [sp,
0000000101262f44 stp x26, x25, [sp,
0000000101262f48 stp x24, x23, [sp,
0000000101262f4c stp x22, x21, [sp,
0000000101262f50 stp x20, x19, [sp,
0000000101262f54 stp x29, x30, [sp,
...
, otool -tvV (0x101262f40) , symbol address (0x100e44738). , , .
SIGSEGV, , - . SIGABRT, , .
.