加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c++ 将源附加到Xcode中的二进制dylib

发布时间:2020-12-14 20:04:29 所属栏目:百科 来源:网络整理
导读:我的iOS应用程序中有一个dylib框架,该框架是在另一台机器上编译的. 我检查了我的机器上的源,并尝试指示lldb映射源代码路径使用: settings set target.source-map /source/code/path/in/dylib/prefix /source/code/path/on/my/machine/prefix 没有用,仍然看
我的iOS应用程序中有一个dylib框架,该框架是在另一台机器上编译的.
我检查了我的机器上的源,并尝试指示lldb映射源代码路径使用:

settings set target.source-map /source/code/path/in/dylib/prefix /source/code/path/on/my/machine/prefix

没有用,仍然看到组装.

注1:dylib是从同一版本的Xcode中的C代码编译的.

注意#2:我使用nm -pa / path / to / dylib来确定文件路径是否嵌入到调试信息中,而且它们是,由于某种原因,lldb不会播放.

谢谢

UPDATE

我遵循了Jim Ingham的回答,并创建了一个自动化脚本,该脚本可以作为本文中的一个主要链接提供:https://medium.com/@maxraskin/background-1b4b6a9c65be

解决方法

要调试在一台机器上构建但在另一台机器上进行调试的代码,您必须构建一个dSYM,并在调试机器上可用.如果你没有这样做,没有什么可以工作.

接下来要检查的是,lldb正在拾取dSYM.此页面有关于此过程如何工作的一些描述:

http://lldb.llvm.org/symbols.html

但是如果其他所有操作都失败,您可以使用add-dsym命令手动添加.

如果仍然没有解决您的问题,请在您的dylib中选择一些符号,然后执行以下操作:

(lldb) image lookup -vn <SYMBOL_NAME>

或者在加载的dylib中交替找到一些地址,然后执行:

(lldb) image lookup -va <ADDRESS>

如果lldb找到dSYM并且调试信息正确,输出行之一应该是“编译单元”的条目.这就是调试信息说源文件的路径是什么.该路径的适当基础是您应该在target.source-map中使用的基础.如果您没有看到该条目,则该编译单元的调试信息将以某种方式丢失.

如果所有这些东西看起来都很好,lldb仍然没有看到源文件,那么你可能会遇到一个错误,在这种情况下,请提交一个http://bugreporter.apple.com的错误.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读