c++ 将源附加到Xcode中的二进制dylib
我的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的错误. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |