【问题标题】:Xcode - debugging library built outside projectXcode - 在项目之外构建的调试库
【发布时间】:2013-04-06 11:49:18
【问题描述】:

我有一个 C 库,其代码位于 /repos1/clib 中。我使用最新的 iOS sdk 从命令行构建它以创建 clib.a(包括模拟器的调试构建),我将其复制到 /repos2/proj 中的 iOS 项目中。

我已经使用这个设置好几年了。旧的 C 库偶尔可能需要一些调试,我很高兴 Xcode 只需进入项目外部(repos1 内)的库代码而无需进行任何设置 - 它就可以工作。 但这直到几个 Xcode 版本之前。我不确定它是什么时候改变的——也许是当他们从 gcc 转移到 llvm 时? - 因为我很少需要调试 C 代码,但有一段时间我只有在尝试从 iOS 项目调试 C 库时才会被拆解(至少包括对 C 文件名和行号的引用)。有几次我需要调试它非常不方便(我创建了一个包含 C 代码的临时项目)。

那么,知道为什么它以前有效而现在无效吗?我应该去哪里看?可能是我构建 C 库的方式,也许我使用的 gcc 中有一个标志在 llvm 中没有等效项(如果相关,我可以找到并发布我正在使用的旧构建命令)?是 Xcode 中的问题吗?有办法告诉它在哪里寻找源代码?

谢谢!

编辑:为了清楚起见,我可以将 C 库添加为 Xcode 中的源代码或子项目,但是由于超出范围的原因,这对这个特定项目没有帮助。那么,它可以像以前的 Xcode 版本一样工作吗?如果没有,知道为什么不这样做还是很有趣的。

【问题讨论】:

    标签: ios xcode xcode4.5 xcode4.6


    【解决方案1】:

    推荐的方法是在 Xcode 中创建一个库项目,一个用于 iOS(有一个模板),然后当您构建该项目时,将该项目添加到您的应用程序中,确保该库是一个依赖项并获取链接。网上有很多教程如何做到这一点。

    然后随着 iOS 的发展和新架构 (armv7s) 的出现,您只需更新两个项目即可。

    【讨论】:

    • 库没有正常添加到项目中是有充分理由的(我必须像你说的那样制作一个临时项目,以便在需要时每年调试一次左右)。所以对于这个项目的细节,它以前的工作方式非常方便,我想看看我能不能把它拿回来。
    【解决方案2】:

    我也在为同样的问题苦苦挣扎。

    我尝试在库/应用程序项目中重置与符号剥离相关的所有选项,并将应用程序项目复制到与库项目相同的 truecrypt 驱动器,但没有帮助。

    就我而言,这似乎是一个应用项目问题。可以在另一个应用程序项目中使用源代码调试相同的库,这是一个线索。

    我在应用程序项目中有多个版本的同一个库,并且只设置了目标成员资格来选择应该使用哪个版本。不确定这是否会以某种方式影响我的应用程序项目。 尽管如此,在删除所有库并再次将它们复制到应用程序项目后,我能够通过访问源代码来调试库。

    【讨论】:

      猜你喜欢
      • 2011-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-10
      相关资源
      最近更新 更多