在Embarcadero Delphi 10.3 IDE调试器中,在程序变量中使用变量后,是否有方法监视其他程序中的变量?
Embarcadero Delphi 10.3 IDE调试器中是否有一种方法可以在变量(x)用于过程变量(ReasonProcedure)后监视其他过程(TestProcedure、DebugProcedure)中的变量(x)?观察并评估/修改返回“不可访问值”或“E2003未声明标识符”在Embarcadero Delphi 10.3 IDE调试器中,在程序变量中使用变量后,是否有方法监视其他程序中的变量?,delphi,Delphi,Embarcadero Delphi 10.3 IDE调试器中是否有一种方法可以在变量(x)用于过程变量(ReasonProcedure)后监视其他过程(TestProcedure、DebugProcedure)中的变量(x)?观察并评估/修改返回“不可访问值”或“E2003未声明标识符” program Project1; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils; procedure ReasonProcedure(p: TP
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
procedure ReasonProcedure(p: TProc);
begin
p;
end;
procedure TestProcedure;
var
x: integer;
procedure DebugProcedure;
begin
x := 1;
end;
begin
x := 0;
DebugProcedure;
ReasonProcedure(procedure
begin
x := 2;
end);
end;
begin
TestProcedure;
end.
一个选择是:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var P2X: PINT;
procedure ReasonProcedure(p: TProc);
begin
p;
end;
procedure TestProcedure;
var
x: integer;
procedure DebugProcedure;
begin
x := 1;
end;
begin
P2X:=@x; // Keep address of local variable in P2X pointer //
x := 0;
DebugProcedure;
ReasonProcedure(procedure
begin
x := 2;
end);
end;
begin
TestProcedure;
end.
然后把手表放在P2X上^
我不是100%确定它能在匿名方法中工作,但我相信它能
如果不想添加一个新变量来包含指向要监视的变量的指针,则需要在TestProcedure的条目上放置一个断点,在@x,x上进行求值以获取其地址,然后在PINT($)上进行监视^
但是,请注意,在后一种情况下,您必须在TestProcedure的每个后续条目上刷新监视,因为变量位于堆栈上,下次可能位于不同的地址上