【问题标题】:C++ Builder not stopping on breakpointsC++ Builder 没有在断点处停止
【发布时间】:2021-03-19 06:45:00
【问题描述】:

我有一个项目(新开始),其中 C++ Builder 没有在任何断点处停止。我已确保我处于 Debug 模式(不是发布),Linker->Full Debug Information = True, C++ Compiler->Debug Configuration, C++ Compiler->Debugging->Debug Information = true, Debug Line Number Information = true, Expand内联函数 = true。

我没有弄乱这个项目的任何编译器/链接器设置。我已经尝试过使用两种不同版本的编译器,但在这两种情况下,断点都不会中断。我确实尝试添加:
{ _asm { int 3 } } 当程序启动时,它点击了几次,所以我知道代码正在执行。 (此外,我在整个地方放置了一堆断点,它们也不起作用。

有什么想法吗?

【问题讨论】:

  • @UncaAlby:C++Builder 的情况并非如此,调试器集成到 IDE 中。
  • 您是否在代码编辑器的装订线(左侧)中设置断点的行上看到蓝色标记?如果不是,则表示代码不会被执行。
  • @KenWhite 在这种情况下,请忽略我的评论。
  • @KenWhite,排水沟中没有任何蓝色标记。只有行号和行号哈希标记。断点点是红色的。
  • 对于未设置书签的行,装订线中应该有蓝点。如果它们不存在,则编译器不会将它们视为可以设置断点的行。在确保所有内容都已配置好进行调试后,您是否尝试过对项目进行完整构建? (不仅仅是一个编译,而是一个项目->构建?)

标签: c++builder


【解决方案1】:

这有两个原因(请注意蓝点仅在您的程序运行时可见!):

  1. 您的代码没有执行

    如果你在从未执行过的东西上设置断点,它就永远不会停止。此外,有些行往往会被优化掉,因此有时有助于在调试时禁用优化。

  2. 你的项目文件搞砸了

    这种情况不时发生。通常有帮助的是:

    1. 删除项目中的所有临时文件*.tds,*.map,*.obj*.exe

    2. 将受感染文件中的#pragma hdrstop 行移至其他位置

      通常你需要尝试更多的位置,直到它起作用......即使在所有包含之后,大多数情况下也会下降几行。

    3. 保存所有文件,然后编译运行

    如果代码左侧出现蓝点,您的项目已修复,您可以将#pragma hdrstop移动到其原始位置。

但有时没有任何帮助。在这种情况下,创建一个新项目。这模仿了您的旧(表格编号和名称),然后将 *.bdsproj 文件复制到您的旧文件中。

备份您的工作项目文件是个好主意,因为 IDE 偶尔会破坏它(这种情况很少见,但确实会发生)

如果你有不同的编译器版本,请使用你的文件扩展名(他们稍微改变了它们)

【讨论】:

    【解决方案2】:

    您忘记提及您使用的是哪个版本,但我猜它是一个较旧的版本并且您的项目是 64 位的。我自己也经历过这个错误。他们从那以后修复了它,但是 64 位 C++ Builder 调试器对于大型项目仍然几乎没有用(即断点再次工作,但调试器在第一个断点之后崩溃)。升级到 10.4 Update 1,除非您使用小型单线程项目,否则不要期望太高。

    【讨论】:

      【解决方案3】:

      您是否在项目管理器中选择了如图所示的调试配置?

      【讨论】:

      • 欢迎来到 Stack Overflow!请将其表述为一个解释性的条件答案,以避免给人一种提出澄清问题而不是回答的印象(应该使用评论而不是答案,比较 meta.stackexchange.com/questions/214173/… )。例如像“如果你的问题是......那么解决方案是......因为......。”
      猜你喜欢
      • 2012-05-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-18
      • 1970-01-01
      • 2013-08-31
      • 1970-01-01
      • 2017-01-24
      相关资源
      最近更新 更多