在Delphi中进行调试时,我经常会意外地进入我不感兴趣的代码.
让我们首先说我知道你可以用F8跳过,并且你可以用f4跑到某一行.
例:
function TMyClass.DoStuff():Integer;
begin
// do some stuff
bla();
end;
procedure TMyClass.Foo()
begin
if DoStuff()=0 then // press F7 when entering this line
beep;
end;
Run Code Online (Sandbox Code Playgroud)
示例:我想通过按F7进入方法DoStuff(),但是我没有去那里,而是首先进入FastMM4.FastGetMem(),这是一个庞大的汇编代码,显然我对它不感兴趣.时刻.
有几种方法可以解决这个问题,我不喜欢它们中的任何一种:
在" bla " 上添加一个断点(如果你只想在特殊情况下进入DoStuff,几乎没用,比如迭代23498938);
而不是按F7,手动将光标移动到" bla ",然后按F4(Works为这个简单的例子.实际上,它没有);
在FastMM的情况下:暂时禁用fastmm;
有没有办法提示IDE我从来没有兴趣进入某个代码块,或者我是否总是要设置额外的断点或使用F4来避免这种情况?
我希望有一些神奇的编译器指令,如{$ NODEBUG BEGIN/END}或类似的东西.
在大多数情况下,能够排除整个单元对我来说足够精细,但能够避免某些方法或甚至代码行会更好.
更新:也许codegear应该引入像跳过点(而不是断点)的东西:-)
我已将Application.OnException设置为自定义异常处理程序,以便我可以记录崩溃并提供退出选项.但是,我现在发现这甚至在我已经处理的异常上运行,例如,在验证数字输入时出现的异常.有没有办法让自定义异常处理程序只在未处理的异常上运行?
编辑:事实证明,当我在调试器外部运行时,我得到了预期的行为.也许这只是一个调试器的事情.至少可以说,我没有发现Delphi调试器与异常的交互是直观的.
有没有办法在Delphi应用程序中关闭运行时显示的异常消息?我认为必须有一个指令来关闭异常消息,但我不记得它.