更新:根据Jason Molenda给出的答案,我意识到设置命令根本不是问题 - 它正在被正确读取并且具有正确的值,但是仍然有断点没有解决。我已经更改了主题名称以更准确地解决问题。
问题摘要:我包含cpp文件,当使用gutter设置断点时,Xcode无法解析它们,应用程序是在外部构建的(不是在Xcode中开发的),而我的.lldbinit已经设置了target.inline-breakpoint-战略始终如一。
以前的版本: 我的问题是我无法让Xcode的调试器在包含的.cpp文件中断点(来自外部构建的应用程序,只是尝试使用Xcode作为调试器)。
我发现答案是将以下内容添加到.lldbinit文件中:
设置设置target.inline-breakpoint-strategy始终
我做到了。它似乎根本没有阅读,也没有改变任何东西。使用以下命令自行运行命令时
命令source~ / .lldbinit
它告诉我:
-bash:settings:command not found
我不明白为什么它无法弄清楚'settings'命令。我将补充一点,我对该文件应该如何工作知之甚少,但我看到这个命令在许多lldbinit文件中使用没有问题。
我搜索了有关此内容的信息,无论我如何搜索,Google都绝对没有任何相关内容。
其他说明:
- 应用程序是使用调试信息构建的。
- 要设置Xcode,我创建了一个空项目,设置一个新方案的可执行文件来调试我构建的那个,并添加了代码浏览的代码文件夹引用。
-I使用Xcode装订线添加断点。
- 我正在使用MacOS 10.12 - Sierra,而不是Linux,以及Xcode 8.2.1。
- 如果我通过命令行运行LLDB并使用:b filename.cpp:line设置断点,一切正常。即使我手动运行时遇到'settings:command not found'错误,也是如此。但它从未在Xcode的可视化调试器中运行。也许我被这个错误误导了?
-Breakpoints在包含其他文件的基本.cpp文件中正常工作,但在任何包含的文件中都没有。
感谢您的帮助。
答案 0 :(得分:1)
好的,这个问题在最近几天一直困扰着我,互联网上几乎没有什么可以帮助 - 但我终于明白了!有点意外 - 我摆弄了东西,现在它起作用了一些完全神秘的原因。
这适用于Xcode 8 - macOS Sierra - 2010年中期计算机
问题:
在外部版本中,断点适用于主cpp文件,但断点不适用于任何包含的文件 - “#include”附带的cpp文件。 lldbinit设置无助于改善这种情况。
<强>症状:强>
使用包含的文件中创建的一些新断点运行程序,然后按xcode调试器中的pause键。 在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
现在构建工作,并且神秘地,现在你的断点全部工作!
关于我的设置的其他说明:
希望这有帮助!
答案 1 :(得分:0)
val unigram = new NGram().setN(1).setInputCol("words").setOutputCol("unigram")
val hashingTFunigram = new HashingTF().setInputCol(unigram.getOutputCol).setOutputCol("tfFeatures").setNumFeatures(5000)
val bigram = new NGram().setN(2).setInputCol("words").setOutputCol("bigram")
val hashingTFbigram = new HashingTF().setInputCol(bigram.getOutputCol).setOutputCol("tfFeaturesbigram").setNumFeatures(5000)
val trigram = new NGram().setN(3).setInputCol("words").setOutputCol("trigram")
val hashingTFtrigram = new HashingTF().setInputCol(trigram.getOutputCol).setOutputCol("tfFeaturestrigram").setNumFeatures(5000)
val assembler = new VectorAssembler()
.setInputCols(Array("tfFeaturesunigram", "tfFeaturesbigram", "tfFeaturestrigram"))
.setOutputCol("tfFeatures")
应该在lldb中运行。你从shell运行它;该错误消息来自bash。 (&#34; command source ~/.lldbinit
&#34;并不意味着什么要打击)
settings
。这并不常见,因此它不是默认行为 - 它会降低调试器的性能,以扫描每个文件,如此处所需。它是https://lldb.llvm.org/troubleshooting.html顶部的文件。大多数人不需要这种设置。
我不确定为什么Xcode中的断点,当您点击源编辑器的断点装订线时,正在工作。这可能是一个单独的问题。如果您启动项目并暂停它,则可以执行
settings set target.inline-breakpoint-strategy always
在调试器控制台窗口中验证它是否像您想要的那样(lldb) settings show target.inline-breakpoint-strategy
。如果您的断点不起作用,我首先会查看您的构建设置,看看您的某个构建设置是否没有生成调试信息。