小编Rob*_*ter的帖子

Delphi异常不让我看到局部变量

在Delphi中调试时,异常会正确地告诉我导致错误的代码行,但我无法访问任何局部变量.这是调试器中的限制吗?还是我错过了一些简单的东西?目前,我必须将所有局部变量镜像到故障前的全局变量,重新编译程序并希望能够重复相同的异常.

例如

MyArray[I]:=Foo(...); 
Run Code Online (Sandbox Code Playgroud)

如果I超出范围(边界检查打开),我无法看到变量I是什么,除非我将它镜像到前一行的全局范围调试变量.

或者,如果我有

MyInteger:=Trunc(MyFloat), 
Run Code Online (Sandbox Code Playgroud)

MyFloat6.1E+17的,我不知道它的价值.

delphi

6
推荐指数
1
解决办法
497
查看次数

在无限循环中停止delphi程序

当在Delphi中发生无限循环时,调试器在我按下停止按钮时甚至不会给我一个堆栈跟踪.如果我怀疑程序停止的位置,我可以设置断点,如果这是正确的无限循环,它将停止.

这是一个故意导致无限循环的示例程序:

procedure TForm1.btnDebugInfiniteLoopClick(Sender: TObject);
var I: Integer;
begin
    I:=0;
    while I<100 do begin
        I:=1+1;
        if I>64 then I:=I div 2;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

当停止时,我得到的东西看起来像:

ntdll.RtlUserThreadStart:
776301B4 89442404         mov [esp+$04],eax
776301B8 895C2408         mov [esp+$08],ebx
776301BC E9E99C0200       jmp $77659eaa
776301C1 8DA42400000000   lea esp,[esp+$0000]
776301C8 8DA42400000000   lea esp,[esp+$0000]
776301CF 90               nop 
ntdll.KiFastSystemCall:
776301D0 8BD4             mov edx,esp

...
Run Code Online (Sandbox Code Playgroud)

当我单步(F7)时,它单步几行,然后锁定直到我再次击中,此时我得到相同的结果.

delphi debugging delphi-xe3

5
推荐指数
1
解决办法
1843
查看次数

单独的鼠标用于调试器

我正在编写一个Delphi(XE3)应用程序,其中鼠标位置很重要,但我希望能够使用另一个鼠标来设置断点而无需移动主鼠标位置.我可能在我试图调试的应用程序中按下shift或control,因此alt-tabbing到IDE并使用键盘键盘设置断点将不起作用.Windows 7可以轻松设置来执行此操作吗?

delphi debugging

2
推荐指数
1
解决办法
182
查看次数

标签 统计

delphi ×3

debugging ×2

delphi-xe3 ×1