2017-05-27 154 views
1

当我编译我的swift框架MyFramework我让Xcode生成MyFramework.framework(编译框架)和MyFramework.framework.dSYM(dSYM文件)。Xcode生成的DWARF文件中的相对路径

通过运行dwarfdump myframework.framework.dSYM/Contents/Resources/DWARF/MyFramework我注意到源文件的所有路径都是绝对路径。

这使得与同事共享这两个文物(连同源代码)成为不可能,并且允许他们使用编译的框架并能够正确地调试他们的代码。更确切地说,他们无法使用调试器进入框架内部。

因此他们需要重新编译这个非常不方便的框架。

有没有办法修改DWARF来编辑这些路径,或者甚至更好地说服Xcode在DWARF文件中使用相对路径?

回答

0

虽然我不知道如何更改存储在dSYM中的路径或使它们相对,但我可以提供一种解决此问题的方法,并且可以在任意机器上使用这些符号进行调试源代码位于不同的基本路径中。一旦你找出原始路径是什么(例如/ Users/rob/src/Project),并且你在例如这个库中有该库的代码, /用户/卢卡/资源/项目,那么你就可以发出此命令LLDB,将取代调试器原路径与路径的那届:

settings set target.source-map /Users/rob/src/Project /Users/luka/Sources/Project

不幸的是,你需要运行这个命令用于每个调试会话。为此,您可以在您的主要中创建断点,该断点运行该命令并在不停止的情况下继续执行。

要找到最初的源代码路径,您可以使用dwarfdump,或者您可以从lldb中查找符号,您可以使用im loo -v -n MySymbol或通过命令的其他参数(取决于符号的类型你正在尝试使用)。