我是一名长期的 Delphi 开发人员,过去我在开发时使用第三方工具进行日志记录和调试(称为 Smart Inspect),但是现在我已经升级到 Delphi XE,我想尝试使用 IDE 进行调试。

我的问题是,给定一个像

procedure MyFunction;
var
    str : string;
begin
    str := 'Foo';
    //Debug, show value of str?
    str := AnotherFunction(str);
    //Debug, show value of str?
end;

我如何在不做诸如ShowMessage(STR)之类的愚蠢的事情的情况下进行调试并获得STR的价值;

如果某处有视频(或文章),那么我非常乐意阅读。

有没有办法观察/输出变量的值。

有帮助吗?

解决方案

好了,德尔福XE自带的CodeSite记录,但我得到你所谈论的调试器本身的感觉。

如果你把一个断点在程序中,它会当它击中它打破调试器。从那里,你已经有了一个局部变量窗格中,并沿IDE的左侧窗格手表。局部变量将显示所有当地人的价值,以及手表,您可以设置表达式,其价值就会防不胜防。

您也可以获得类似手表的东西,但更详细的信息(尤其是对于结构类型,如对象)通过检查(Alt-F5)。此外,评估/修改(Ctrl-F7)将允许您在表达式类型和对其进行评估。这不是很详细,检查,但它给你更多的灵活性。

如果你熟悉这些工具,你会发现调试变得更加容易。

其他提示

如果您只想使用 IDE 调试器,请执行以下操作:

  • 在某处放置断点
  • 右键单击断点圆圈并选择“断点属性...”
  • 按“高级”按钮显示更多选项
  • 取消选中“中断”复选框
  • 然后使用“日志消息”和“评估表达式”编辑框输入跟踪值

此类消息将发送到“事件日志”调试器窗格。右键单击窗格并选择“属性”。在那里,您可以根据需要过滤(“消息”)/突出显示(“颜色”)跟踪消息。

1)可以使用的OutputDebugString函数,以输出字符串到调试窗口

2)可以使用的CodeSite快车。我建议从 CodeRage 5 视频作为使用的CodeSite

其他的答案是正确的。

我个人最喜欢的技术(如DA-软的答案一样)是创建一个断点,该消息记录到事件日志,其中包含我希望记录的值,而实际上并没有“破发”(即,继续执行,不必你打Run图标)。然后,在达到行代码的每一次,我让我的消息,我在日志中值。因为我可以回去看历史,以及查看当前的值,我觉得这不是仅仅使用调试器监视窗口更加有用。

但由于德尔福XE包含的CodeSite,你可以去远远超出了中断点表达式计算为你做。然而代码网站,您需要修改代码以增加一些记录。但它远远好于一个消息框。

您还可以使用的OutputDebugString值(P Char(S)),以输出任何字符串到调试器。由于这可以包含任何你想要的,这是一个非常好的方式来调试,但不显示的东西给最终用户。

在我的许多应用中,我有一个特殊的跟踪缓冲器,其是圆形(即,它保持只有最后500行左右)。当以往我看到一个问题,我不仅获得堆栈回溯,我还保存在内存中的跟踪日志,所以我有什么事情只是我的问题之前,一些历史。

您还可以检查出登录4德尔福项目。

我更喜欢调试器提示。打破调试器后,将鼠标移动到“STR”随时随地在你的代码,你会看到它的当前值。您还可以突出显示通过鼠标的一些语句,并对其进行评估。例如突出显示“AnotherFunction(STR)”和将鼠标置于它。

没有错,任何其他的答案,但我只是想补充这些有用的功能。

procedure DebugString ( const s : string ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( s ) ) ;
  {$ENDIF}
end ;

procedure DebugString ( const s : string ; args : array of const ) ; overload ;
begin
  {$IFDEF DEBUG}
  OutputDebugString ( PChar ( Format ( s , args ) ) ) ;
  {$ENDIF}
end ;
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top