是否可以符号化C++代码

Is it possible to symbolicate C++ code?

本文关键字:C++ 代码 符号化 是否      更新时间:2023-10-16

我最近在尝试符号化iOS应用程序的崩溃日志时遇到了麻烦。由于某种原因,dSYM 的 UUID 未在 Spotlight 中编制索引。经过一些手动搜索和大量的命令行咒语,我设法对崩溃日志进行了部分符号化。

起初我认为dSYM可能不完整或类似的东西,但后来我意识到缺少的方法调用是C++代码中发生的方法调用:这个项目是一个Objective-C应用程序,它调用C++库(通过Objective-C++),这些库回调Objective-C代码(再次,通过Objective-C++代码)。我错过的电话,具体来说,是在C++土地上发生的电话。

所以,我的问题是:符号化过程有没有办法解决C++代码的函数调用?我需要设置哪些特殊选项(如果有)?

苹果SDK附带的一个有用程序是atos(符号地址)。基本上,这是您想要做的:

atos -o myExecutable -arch armv7 0x(address here)

它应该打印出该地址的符号名称。

我不精通 Objective-C,但我会确保C++代码是用符号编译的。特别是,您是否确保在编译C++代码时包含 -rdynamic 和/或 -g?

尝试

矮人转储 --lookup=0xYOUR_ADRESS YOUR_DSYM_FILE

您必须手动查找每个地址(或编写脚本来执行此操作),但是如果符号正常(您的dSym文件大于20MB),这将完成这项工作。