You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用TGDBMIDebugger设置断点为何未生效?

断点式代码覆盖率方案在Lazarus下失效的问题

背景

由于Lazarus暂无可用的代码覆盖率工具,我设计了一个临时方案:在需要检测覆盖的代码行设置断点,当断点命中后自动禁用该断点;待目标程序结束后,通过检查仍处于激活状态的断点对应的行号,来判断哪些代码未被覆盖。但这个方案无法正常工作。

测试环境与代码

目标测试程序

我编写了测试程序hello.lpr,代码如下:

program hello;
uses
  Interfaces, Forms;
begin
  Application.Initialize;
  Application.MessageBox('Hello, world', 'Hello'); // Line 6
end.

该程序已编译为包含调试信息的hello.exe。

覆盖率检测程序

我开发了用于检测覆盖率的工具lazcov.exe,核心逻辑集中在TCovRunner.Run和TCovRunner.OnBreakPointHit方法中。

问题现象

运行lazcov.exe后,hello.exe能正常在调试器中启动;但点击弹窗的OK按钮结束hello.exe后,调试器报错“无进程运行”,并且显示第6行的断点从未被命中。

疑问

  • 为何第6行的断点未生效?
  • 调试器或断点的初始化过程是否存在错误?
  • 有哪些可行的调试思路可以定位问题?

内容的提问来源于stack exchange,提问作者Dmitry Grigoryev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 14:02:40