c++ - xcode 断点未通过包含的 cpp 文件解决 - MacOS

标签 c++ xcode debugging lldb macos-sierra

更新:根据 Jason Molenda 给出的答案,我意识到设置命令根本不是问题 - 它被正确读取并具有正确的值,但断点仍然存在没有解决。我更改了主题名称以更准确地解决问题。

问题总结:我包含了 cpp 文件,Xcode 在使用 gutter 设置断点时无法解析它们,应用程序是在外部构建的(不是在 Xcode 中开发的),我的 .lldbinit 已经设置了 target.inline-breakpoint-策略总是确定的。

以前的版本: 我的问题是我无法让 Xcode 的调试器在包含的 .cpp 文件中的断点处中断(来自外部构建的应用程序,只是尝试将 Xcode 用作调试器)。

我发现答案是将以下内容添加到 .lldbinit 文件中:

设置始终设置 target.inline-breakpoint-strategy

我做到了。它似乎根本没有被阅读,也没有改变任何东西。自己运行命令时使用:

命令源~/.lldbinit

它告诉我:

-bash:设置:找不到命令

我不明白为什么它无法理解“设置”命令。我要补充一点,我对这个文件应该如何工作知之甚少,但我看到这个命令在许多 lldbinit 文件中使用没有问题。

我搜索了有关此的信息,但无论我如何搜索,谷歌都没有给我任何相关信息。

其他说明:

-应用程序是使用调试信息构建的。

-为了设置 Xcode,我创建了一个空项目,将一个新方案的可执行文件设置为调试我构建的方案,并添加了用于代码浏览的代码文件夹引用。

-我使用 Xcode gutter 添加断点。

-我使用的是 MacOS 10.12 - Sierra,而不是 Linux,以及 Xcode 8.2.1。

-如果我通过命令行运行 LLDB 并使用以下命令设置断点:b filename.cpp:line,一切正常。即使在手动运行时出现“设置:未找到命令”错误,情况也是如此。但它在 Xcode 的可视化调试器中永远不起作用。也许我被这个错误误导了?

-断点在包含其他断点的基本 .cpp 文件中工作正常,但在任何包含的文件中都不起作用。

感谢您的帮助。

最佳答案

好吧,这个问题过去几天一直困扰着我,互联网上几乎没有任何帮助 - 但我终于想通了!有点不小心 - 我摆弄了一些东西,现在它出于某种完全神秘的原因起作用了。

这适用于 Xcode 8 - macOS Sierra - 2010 年中期的计算机

问题:

在外部构建中,断点适用于主 cpp 文件,但断点不适用于任何包含的文件 - cpp 文件包含在“#include”中。 lldbinit 设置无助于改善这种情况。

症状:

使用在包含的文件中创建的一些新断点运行程序,然后在 xcode 调试器中按下暂停键。 在 LLDB 控制台(屏幕右下角)中,键入: 断点列表 您会看到所有断点的末尾都写着“location = 0 (pending)”。如果您从主文件添加工作断点,您会看到它显示“location = 1”。

解决方案:

在项目管理器中,点击主项目文件,然后点击你的目标,转到“信息”——因为我假设你能够正确构建,你将有你的 build.sh 文件的路径在构建工具框中。但请确保目录框为空(我的参数框也为空,但我怀疑这是否相关。)

一旦该目录框为空,build.sh 将不再工作,因为它将无法找到您的文件。要解决此问题,请像这样硬编码您的路径:

clang++ -g -I/usr/local/include/SDL2 -lSDL2 /absolute/path/to/sdl_mygame.cpp -o /absolute/path/to/mygameexecutable

现在构建成功了,神秘的是,现在你的断点都起作用了!

关于我的设置的其他说明:

  • 我将此项目创建为外部构建
  • 我创建了一个目标 指向我的构建文件并取消选中“将build设置传递给 环境”
  • 我在 Build 下的 Scheme 中选择了这个目标。
  • 我在运行下选择了方案中的可执行文件并选中了调试 可执行
  • 大多数其他 xcode 设置似乎都不是必需的。
  • 我正在跟随 Handmade Hero

希望这对您有所帮助!

关于c++ - xcode 断点未通过包含的 cpp 文件解决 - MacOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42329914/

相关文章:

c++ - 忽略引用函数参数

c++ - 通过引用传递空的或未初始化的 STL 容器

iphone - 按下按钮后 Main.m 崩溃

c++ - 在结构 vector 的监 window 口中显示特定变量

c# - 如何检测 Visual Studio 中未处理的异常?

c++ - 使用 omp_set_num_threads() 将线程数设置为 2,但 omp_get_num_threads() 返回 1

c++ - 每 xx 小时执行一次命令的 Windows C++ 代码(类似于 CRON)

ios - iPhone 6s及更高版本设备中的UIPickerView宽度问题

SwiftUI - 结构绑定(bind)未按预期更新 UI

Eclipse TreeMap 调试 View