Delphi中调试的终极指南

Delphi中调试的终极指南

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

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

你可以说

代码语言:javascript复制if then

asm

int 3; // Enter CPU Debugger

end;

Or you could say

if not then

asm

int 3; // Enter CPU Debugger

end;其中ExpressionA是你从未想过是真的东西(即,如果它是真的,它表示异常情况),或者ExpressionB是你总是期望为真的东西(即,如果它是假的,它表示异常情况)。

请记住,这两个表达式都可以包含多个函数调用--如果需要的话。

您可以将它们放在块中,{$IFDEF调试}中,如下所示:

代码语言:javascript复制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(Expression,"Message");ASSERT(not Expression,"Message");

以确保代码中的内容按预期运行。

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

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

相关推荐

女生宫斗手游排行榜
贝斯特365

女生宫斗手游排行榜

📅 08-24 👁️ 1123
松果:松果,別稱松塔,為松科植物的果實,成熟後內有松子。可作藥用,有祛風
caution高考四级六级考研
365bet网址

caution高考四级六级考研

📅 11-09 👁️ 9438