DelphiXE中的异常位置在调试器中未正确定位?
调试器找不到异常的行,它可能是由于深度或延迟 代码:DelphiXE中的异常位置在调试器中未正确定位?,delphi,debugging,delphi-xe,Delphi,Debugging,Delphi Xe,调试器找不到异常的行,它可能是由于深度或延迟 代码: procedure-LoadLogo; 常数 RES_APP_LOGO='AppAboutLogo'; 变量 resourceStream:TResourceStream; 开始 尝试 resourceStream:=TResourceStream.Create(HInstance、RES\u APP\u LOGO、RES\u TYPE\u FXRESOURCES); resourceStream.Position:=0; ImageLogo
procedure-LoadLogo;
常数
RES_APP_LOGO='AppAboutLogo';
变量
resourceStream:TResourceStream;
开始
尝试
resourceStream:=TResourceStream.Create(HInstance、RES\u APP\u LOGO、RES\u TYPE\u FXRESOURCES);
resourceStream.Position:=0;
ImageLogo.Picture.Bitmap.LoadFromStream(resourceStream);//-->原因例外(A)
刷新();
最后
FreeAndNil(资源流);
结束;
结束;
过程TForm.Initialize;
开始
//做点什么。。。。
LoadLogo()//(C)
另一个函数()// 当您使用调试DCU时,您需要使用调用堆栈来查看执行是如何到达抛出的。调试器无法在引发异常的时间点之前中断任何时间
如果没有调试DCU,调试器只能在具有调试信息的代码行中断。这必须在代码中的某个地方。根据我的经验,如果停止位置与断点不匹配,则源代码的可见性有问题,即它与编译不同步。在IDE中意外地打开源代码的一个副本也是很容易的,这似乎会混淆IDE,并且如果经常在该窗口中停止从另一个窗口编译,则会出现这种情况。您所描述的确实发生了,但OP所描述的并不是这样
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;