【发布时间】:2014-09-02 19:16:33
【问题描述】:
我在工作中切换到其他项目,我注意到 Delphi XE2 调试器没有显示引发异常的行。当我回到家时,我开始调查。然后我发现可以在Tools -> Options -> Debugger选项中禁用它并检查Integrated debugging。此外,我在 要忽略的异常类型 列表中取消选中 Language exceptions 下的所有内容。 通知语言异常保持选中状态。 项目 -> 选项 -> 编译,我在那里有默认设置并启用了 溢出 和 范围检查。我正在运行 Debug 构建。我清理了它。
我以前没有注意到,但现在 Delphi 调试器在我调用此代码时不给我该行:
procedure TForm1.BitBtn1Click(Sender: TObject);
var
_List: TStringList;
begin
_List := TStringList.Create;
try
Caption := _List[0]; // 'List index out of bounds (0)' here
finally
FreeAndNil(_List);
end;
end;
但这有效(仅用于显示调试器确实显示了某些内容的行):
{$R+} // Range check is ON
procedure TForm1.BitBtn2Click(Sender: TObject);
var
_myArray: array [1 .. 5] of string;
i: integer;
begin
for i := 0 to 5 do
begin
_myArray[i] := 'Element ' + IntToStr(i); // Range check error here
ShowMessage('myArray[' + IntToStr(i) + '] = ' + _myArray[i]);
end;
end;
这里发生了什么?如何让调试器尽可能多地显示?
谢谢。
【问题讨论】:
-
您是否尝试过在项目选项中启用
use debug dcu's(仅在您实际拥有这些 dcu 时才有效)。
标签: delphi debugging exception line delphi-xe2