【问题标题】:How to set breakpoint in a dependent xcode project如何在依赖的 xcode 项目中设置断点
【发布时间】:2017-12-12 23:23:01
【问题描述】:

我有一个 XCode 项目(我的主要 xcode 项目有它的可执行文件)。它依赖于其他一些项目(在 Detail View 的 Project 选项卡下,它依赖于一些其他 xcode 项目)。

我的问题是如何在依赖项目的代码中设置断点?

我试过了,但这不起作用 1.打开我的主xcode项目 2.双击依赖的xcode项目之一 3.在源码目录下,找到我要打断的文件并添加断点(点击编辑器边框的一侧,会出现一个蓝色的“书签东西”) 4. 返回“Build and Go”,我的应用程序确实运行了,但它从未在我在 #3 中设置的断点处中断。

有人可以帮帮我吗?我花了好几天的时间,我不知道为什么。

谢谢。

【问题讨论】:

  • 你的做法是对的,只要构建了依赖项目,并且主项目链接到它的构建产品。

标签: xcode macos


【解决方案1】:

1) 在你的项目中添加断点

2) 在 xcode 中进入断点视图(除了项目导航器的左上角)视图的图标就像一个断点图标

3) 右击需要的断点,选择“移动到”->“用户”

如果断点在“用户”项目下,那么所有项目都可以访问它。

【讨论】:

  • 非常有用,谢谢。但我想知道:断点位于“工作区”部分。工作区中的所有项目都不能访问它吗?事实是:不是,但我想知道为什么?
  • 感谢您的回答!所有在单独的项目中构建框架和EndAPP(使用实际框架项目生成的.framework的应用程序)的人都应该使用这种方法,调试变得更容易。
【解决方案2】:

每当我在使用 Xcode GUI 设置断点时遇到问题时,我都设法使用调试器命令行(也就是说,输出窗口中的“lldb”提示符)来完成。例如,要在源文件“client.m”的第 42 行设置断点,请键入:

(lldb) b client.m:42

除了解决这个特定问题之外,命令行调试提供了比任何 GUI 都大得多的灵活性和可自动化性。一个好的起点是LLDB tutorial。 (完全披露:我是 unix 和 gdb 的长期粉丝,所以这里有一些偏见)。

当然,正如其他人所提到的,请确保使用调试符号编译库/依赖项目。希望这可以帮助;祝你好运。

【讨论】:

    【解决方案3】:

    我会在此附和 Jon-Eric 的观点,并补充说,如果您习惯性地使用 Cmd+Enter 运行项目,则应考虑切换到 Cmd+Y 以每次启用 gdb。

    【讨论】:

      【解决方案4】:

      这里有一些东西......(有些明显有些不是)

      1) 确保依赖项目是使用调试符号编译的(我假设它是一个库)

      2) 确保您的活动可执行文件链接到您的依赖库的调试版本

      3) 在调用 lib 的入口点之前在主项目中设置断点,在 lib 的入口点设置 bp...(除了您要命中的真正断点...)

      我发现调试库的最佳方法是打开 lib 项目并将活动可执行文件设置为主项目,然后直接从库项目中点击“构建和调试”。

      我希望这会有所帮助,祝你好运,玩得开心!

      【讨论】:

        【解决方案5】:

        我在使用 Xcode 时也遇到过类似的问题。对我来说,解决方案是确保在主项目中也有一个断点被击中(正如 Kent 在他的第三点中提到的那样)。不过我不明白为什么会这样。

        您还应该只在项目打开时才在项目中设置断点。如果您不这样做,它们可能会开始行为不端:在您禁用或删除它们后仍会停止执行流程,或者在您认为它们已启用时仍不工作。

        【讨论】:

          【解决方案6】:

          确保选择“构建和调试”(对于第 4 步)。 “Go”有时表示“运行”(禁用断点),有时表示“调试”(启用断点)。

          此外,请确保在调试主项目时保持依赖项目处于打开状态。

          【讨论】:

            【解决方案7】:

            除了关于调试符号的kent回复外,检查主项目的构建设置中的COPY_PHASE_STRIP值,并确保在调试中将其设置为NO。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2020-06-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2015-01-31
              • 2010-10-15
              • 2021-10-29
              • 1970-01-01
              相关资源
              最近更新 更多