iOS崩溃报告象征无DSYM-二进制中看到的地址之外的符号地址
iOS crash report symbolication without dsym - symbol address outside the addresses seen in the binary
我正在尝试象征iOS崩溃报告,我没有DSYM文件。我知道我将无法获得一个不错的file_name:行号象征,但要找出代码的"汇编"部分中崩溃的位置将足够好。
首先,这是崩溃线程的堆栈跟踪:
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
...
我有一个解密的二进制文件,并从崩溃报告和二进制匹配中验证了UUID。要手动象征堆栈地址,我要这样做
atos -arch arm64 -o myapp -l 0x100080000 0x0000000100ec4738
我从上面的命令中获取输出
0x0000000100e44738 (in myapp) + 544
这部分是预期的,因为我没有DSYM文件。
请注意,如果我们计算
,也可以获得0x0000000100e44738
symbol address as = (slide + stack - load address)
幻灯片是0x0000000100000000
(从otool -arch arm64 -l myapp | grep -B 3 -A 8 -m 2 "__TEXT"
发现为VMADDR)
SO 0x0000000100000000 + 0x0000000100ec4738 - 0x100080000 = 0x100e44738
与ATOS返回的上述地址相同。
现在的问题是,我在二进制文本部分的地址中找不到0x100e44738
符号地址,我使用以下otool命令
otool -tvV myapp
上述命令的开始看起来像这样。
myapp:
(__TEXT,__text) section
__ZNK5physx14NpSceneQueries10multiQueryINS_12PxRaycastHitEEEbRKNS_15MultiQueryInputERNS_13PxHitCallbackIT_EENS_7PxFlagsINS_9PxHitFlag4EnumEtEEPKNS_12PxQueryCacheERKNS_17PxQueryFilterDataEPNS_21PxQueryFilterCallbackEPNS_20BatchQueryFilterDataE:
0000000101262f40 stp x28, x27, [sp, #-96]!
0000000101262f44 stp x26, x25, [sp, #16]
0000000101262f48 stp x24, x23, [sp, #32]
0000000101262f4c stp x22, x21, [sp, #48]
0000000101262f50 stp x20, x19, [sp, #64]
0000000101262f54 stp x29, x30, [sp, #80]
...
我们可以清楚地看到otool -tvV (0x101262f40)
的起始地址大于symbol address (0x100e44738)
。因此,我找不到我错过的东西或从这里想到的。
此堆栈跟踪适用于sigsegv异常,我不确定是否会更改任何内容。我尝试了与Sigabrt异常的彼此相同示例应用程序中手动象征的完全相同的步骤,我确实看到它可以指出崩溃到程序集中的精确线。
任何帮助或指针都对。
我看起来像是NSURLConnection
的问题。通常,这意味着有一个在DealLoc上未正确设置的代表(NSURLConnection
是分配的 - 不弱,因此您必须手动将其设置为nil)。查找使用NSURLConnection
或其他网络(例如代码)的代码中的位置。特别注意将自己视为网络请求的委托的视图或视图controller,因为当用户离开页面时,视图通常会留下内存。
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 获取未定义的符号:尝试使用Clang地址清理器时__asan_memset
- 无符号的 int 到 IP 地址字符串,不带 itoa/to_string/boost
- iOS崩溃报告象征无DSYM-二进制中看到的地址之外的符号地址
- 将无符号int地址视为指针,并将其解引用为字节数组
- 使用inet_pton()获取IPv4地址的无符号int表示形式
- 在内存地址中计算 2 补码中的符号位
- C ++如何将我的命令行参数(MAC地址)转换为无符号字符
- 引用数据类型的 & 符号是否返回引用本身的地址或它所引用的值
- 将缓冲区的地址存储为无符号整数;
- 链接器用内存地址替换符号引用
- 我可以将向量的第一个元素的地址直接传递给一个函数吗?该函数需要一个无符号字符作为其输入
- 如何工作与内存地址在C?它们是十六进数还是无符号整型
- 如何定义导出符号的地址
- 在C/ c++或任何其他类似语言中,对变量或数据类型应用&符号时返回的地址类型
- 如何通过符号在内存中的地址获取有关符号的更多信息
- C++ 不接受对象字符串中的@符号吗?似乎是地址问题?
- GCC链接器描述文件强制符号位于特定地址