gpt4 book ai didi

delphi - DelphiXE 中的异常位置未正确定位在调试器中?

转载 作者:行者123 更新时间:2023-12-03 15:55:14 29 4
gpt4 key购买 nike

调试器没有找到异常行,它要么太深​​,要么太晚。

代码:

procedure LoadLogo;
const
RES_APP_LOGO = 'AppAboutLogo';
var
resourceStream : TResourceStream;
begin
try
resourceStream := TResourceStream.Create( HInstance, RES_APP_LOGO, RES_TYPE_FXRESOURCES );
resourceStream.Position := 0;
ImageLogo.Picture.Bitmap.LoadFromStream(resourceStream); //---> causes exception (A)
Refresh();
finally
FreeAndNil(resourceStream);
end;
end;

procedure TForm.Initialize;
begin

//do something....

LoadLogo(); //(C)

AnotherFunction(); //<----- debugger points here (B)

end;

procedure TForm.CreateCreate(Sender : TObject);
begin
Initialize();
end;

如果位置 (A) 发生异常,并且“使用调试 DCU”= false,则调试器指向 (B),即发生异常后调用的函数外部的行。使用“Use Debug DCUs = true”,它会中断 Graphics.pas 中的通用异常抛出程序。异常类很好,但从调试角度来看,该位置不正确或无用 - 既没有找到调用位置 (C),也没有找到真正的原因点 (A)。

这需要查看调用堆栈以返回到看起来不正确的原因。

有什么想法吗?

最佳答案

当您使用调试 DCU 时,您需要使用调用堆栈来查看执行如何到达抛出点。调试器无法在引发异常之前中断。

如果没有调试 DCU,调试器只能在具有调试信息的代码行处中断。这必须在您的代码中的某个位置。

关于delphi - DelphiXE 中的异常位置未正确定位在调试器中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6888788/

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