Xcode断点未解决随附的CPP文件-MACOS

xcode breakpoints not resolved with included cpp files - MacOS

本文关键字:CPP 文件 -MACOS 断点 未解决 Xcode      更新时间:2023-10-16

update :根据杰森·莫伦达(Jason Molenda)给出的答案,我意识到设置命令根本不是问题 - 它正在正确读取,并且具有正确的值,但仍未解决断点。我将主题名称更改为更准确地适合该问题。

问题的摘要:我包括CPP文件,Xcode在使用天沟设置断点时无法解析它们,应用程序是在外部构建的(未在Xcode中开发),并且我的.lldbinit已经具有设置设置target.inline-breakpoint-策略始终设定。

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

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

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

我做到了。它似乎根本没有阅读,也不会改变任何内容。当我自己运行命令时:

命令源〜/.lldbinit

它告诉我:

-bash:设置:找不到命令

我不明白为什么它无法弄清"设置"命令。我补充说,我对该文件应该如何工作的了解很少,但是我看到在许多LLDBINIT文件中使用了此命令,没有问题。

我搜索了有关此的信息,Google无论我如何搜索,Google都没有给我一点一点。

其他注释:

application是通过调试信息构建的。

- 为了设置Xcode,我创建了一个空项目,将一个新方案的可执行文件设置为debug debug to我构建的项目,并为代码浏览添加了代码文件夹参考。

- 我使用xcode gutter添加断点。

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

- 如果我通过命令行运行lldb并使用以下方式设置断点:b filename.cpp:line,一切正常。即使我在手动运行时会遇到的"设置:找不到"错误,但这是正确的。但是它从未在Xcode的视觉调试器中起作用。也许我被这个错误误导了?

breakpoints在包含其他包含的基础.cpp文件中正常工作,但在任何包含的文件中都不错。

感谢您的任何帮助。

好吧,这是最近几天困扰我的问题,互联网上几乎没有任何东西那会有所帮助 - 但我终于弄清楚了!金达偶然地 - 我摆弄东西,现在出于某种完全神秘的原因有效。

这是针对Xcode 8 -Macos Sierra- 2010年中期计算机

问题:

在外部构建中,断路点适用于主CPP文件,但断点不适用于任何随附的文件-CPP文件中包含的" #include"。lldbinit设置无助于改善情况。

症状:

运行该程序,并在随附的文件中创建了一些新的断点,然后按Xcode Debugger中的暂停键。在LLDB控制台(屏幕底部)中,输入:断点列表您会看到所有破裂的断点都在其中的末尾说"位置= 0(待处理)"。如果您从主文件中添加了工作断点,则会看到它显示"位置= 1"。

解决方案:

在项目经理中,单击主要项目文件,然后单击您的目标,goto" info" - 由于我假设您能够正确构建,因此您将有通往build.sh文件的路径在构建工具框中。但是请确保目录框是空的(我的参数框也为空,但我怀疑这是相关的。)

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

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

现在构建有效,神秘地,现在您的断点都起作用!

有关我的设置的其他注释:

  • 我将此项目创建为外部构建
  • 我创建了一个目标指向我的构建文件和未选中的"通过构建设置环境"
  • 我在构建的计划中选择了这个目标。
  • 我在运行中选择了我的计划中的可执行文件并检查了调试可执行
  • 大多数其他Xcode设置似乎并不是必需的。
  • 我正在跟随手工英雄

希望这会有所帮助!

command source ~/.lldbinit应在LLDB内运行。您正在从外壳中运行它;该错误消息来自Bash。(" settings"并不意味着bash)

当您的项目包含源文件(而不是仅仅是标题)时,需要

settings set target.inline-breakpoint-strategy always。这不是常见的,因此不是默认行为 - 它会降低调试器的性能,按照此处需要扫描每个文件。它是在https://lldb.llvm.org/troubleshooting.html的顶部进行的。大多数人不需要此设置。

我不确定XCode中的断点时,当您单击源编辑器的断点沟中时,为什么会工作。这可能是一个单独的问题。如果您启动项目并暂停,则可以做

(lldb) settings show target.inline-breakpoint-strategy

在调试器控制台窗口中,以确认它是always,就像您想做的那样。如果您的断点不起作用,我将首先查看您的构建设置,看看您的构建设置之一是否没有生成调试信息。