gpt4 book ai didi

delphi - Delphi 调试终极指南

转载 作者:行者123 更新时间:2023-12-03 14:42:51 26 4
gpt4 key购买 nike

Delphi 中是否有完整的调试资源来指导如何使用所有 IDE 调试工具? Marco Cantù 曾经有过一份指南,但如果我没记错的话,它已更新到 Delphi 5。

请您将我重定向到至少更新至 D2009 的完整资源(如果是 XE 则更好)。

最佳答案

调试资源 PDF 没有提到我最喜欢的调试技术:

假设您想在满足某个特定的、复杂的、仅在运行时可用的条件时中断。

你可以说

if <MyExpressionA> then
asm
int 3; // Enter CPU Debugger
end;

Or you could say

if not <MyExpressionB> then
asm
int 3; // Enter CPU Debugger
end;

其中 ExpressionA 是你永远不会想到的东西(即,如果这是真的,则表明存在异常情况),或者其中 ExpressionB 是您始终期望为真的东西(即,如果它是假的,则表示存在异常情况)。

请记住,如果需要,任一表达式都可以包含多个函数调用。

您可以将它们放在一个 block 内,即 {$IFDEF DEBUG} 内,如下所示:

procedure MyProcedure;
var X: Integer;
begin
X := GetTheAnswerToLifeTheUniverseAndEverything();

{$IFDEF DEBUG}
if X <> 42 then // Highly contrived example
asm
int 3; // Enter CPU Debugger -- Press F8 when here to step back into source...
end;
{$ENDIF}

// More code here...

end;

您还可以使用

ASSERT(表达式, "消息");ASSERT(不是表达式,“消息”);

确保代码中的功能按预期运行。

如果在 IDE 中启用了 ASSERT 并且 ASSERT 失败 - ASSERT 将创建一个异常,这会将堆栈展开到其类型的最后一个异常处理程序...

使用我的 int3 方法 - 您可以立即进入 CPU 调试器 - 如果您按 F8(跳过),您将跳到下一行代码 - 您可以检查变量,查看整个调用堆栈,甚至继续单步执行代码...

关于delphi - Delphi 调试终极指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3994802/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com