当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《将源附加到Xcode中的二进制dylib》经验,为你挑选了1个好方法。

我的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



1> Jim Ingham..:

要调试在一台机器上构建但在另一台机器上调试的代码,您必须构建一个dSYM并在您正在调试的机器上使用该代码.如果你还没有那样做,那就什么都行不通了.

接下来要检查的是lldb正在拿起dSYM.此页面介绍了此过程的工作原理:

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

但如果所有其他方法都失败了,您可以使用该add-dsym命令手动添加它.

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

(lldb) image lookup -vn 

或者在加载的dylib中找到一些地址并执行:

(lldb) image lookup -va 

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

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


在OS X上,编译器将调试信息写入.o文件,并在最终二进制映像中写入"调试映射",告诉lldb如何查找.o文件并将矮人链接在其中.因此,如果您正在调试,则不需要dSYM.但是,如果在删除Intermediates文件夹后调试二进制文件,或者在没有该目录但在其他位置具有该目录的计算机上调试二进制文件,则需要创建dSYM并使用dSYM进行调试.
推荐阅读
吻过彩虹的脸_378
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有