Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
即使没有在Delphi IDE中一步一步地调试,也可以访问监视项_Delphi_Debugging_Delphi Xe2_Watch - Fatal编程技术网

即使没有在Delphi IDE中一步一步地调试,也可以访问监视项

即使没有在Delphi IDE中一步一步地调试,也可以访问监视项,delphi,debugging,delphi-xe2,watch,Delphi,Debugging,Delphi Xe2,Watch,当我不在断点时,是否可以看到具有实时值的手表列表 我在TDatamodule的公共部分定义了一个整数Mycounter 我把它加入观察名单 我只能在逐行调试或处于rbeakpoint时看到其值在监视列表中更新 即使控件返回到VCL线程(=当我按F9时),是否有办法在监视列表中看到它的值?从IDE无法做到这一点。监视计算要求暂停进程中的所有线程,以便调试器可以读取内存并执行计算 如果希望在不中断调试器的情况下刷新值,则很可能必须向应用程序中添加代码,以插入感兴趣的值。例如,每当值更改时,向应用

当我不在断点时,是否可以看到具有实时值的手表列表

  • 我在
    TDatamodule
    的公共部分定义了一个整数Mycounter
  • 我把它加入观察名单
  • 我只能在逐行调试或处于rbeakpoint时看到其值在监视列表中更新

即使控件返回到VCL线程(=当我按F9时),是否有办法在监视列表中看到它的值?

从IDE无法做到这一点。监视计算要求暂停进程中的所有线程,以便调试器可以读取内存并执行计算


如果希望在不中断调试器的情况下刷新值,则很可能必须向应用程序中添加代码,以插入感兴趣的值。例如,每当值更改时,向应用程序输出调试消息(例如,
OutputDebugString()
,CodeSite等)添加代码。当然,您需要在单独的查看器中查看信息。

正如David所说,手表是不可能的,但您可以通过向变量添加数据断点来接近它,并让它在每次更改时将其值转储到事件日志中

步骤

  • 获取要跟踪的变量的地址
  • 添加一个数据断点
  • 打开事件日志调试窗口
获取变量的地址

  • 我在示例中使用了变量
    I
    。根据您的示例,这应该是
    @Mycounter

添加数据断点

  • 使用变量的地址
  • 取消选中
    Break
    复选框
  • 计算表达式
    PInteger($45622C)^
  • 记录结果

查看结果


非常感谢大卫。像往常一样锐利。感谢你一步一步地关注数据断点。我不需要经常这样做,也很少能让它发挥作用。这会有帮助的。@jrodenhi-lol。这没那么难,但我也花了一些“duh”的时间才把它发出来。