自动插入断点?

时间:2013-09-04 13:17:49

标签: delphi debugging delphi-xe2

是否可以自动插入断点?例如,我需要在特定单元内的每个过程的开始和退出处插入一个特定的(相同的)条件断点。手动执行此操作将非常繁琐且耗时,因此我正在寻找一种自动执行此操作的方法。

3 个答案:

答案 0 :(得分:11)

没有。 IDE中没有这样做的功能。

根据您对原始问题的评论,您实际要做的是检测全局(“公共”)变量的更改位置。这样做的方法是设置一个Data Breakpoint,它在变量被更改时被触发,然后查看callstack以查看最后执行的代码。 (您可以在帮助文件中通过搜索Delphi 2007帮助索引中的“断点,设置数据断点”或XE4帮助中的“断点属性,数据断点”(上面链接)找到它。

请注意,两者都要求查看地址,但也要使用@VariableName。 (使用堆栈(本地)变量会触发一个对话框,告诉您这样做会使您的应用程序不稳定,并要求您确认是否要执行此操作。)

正如@DavidHeffernan在评论中指出的,更好的解决方案是使公共字段成为具有setter的属性,然后在该setter中设置正常断点。

答案 1 :(得分:2)

断点存储在项目DSK文件的类似命名部分中。在IDE中手动设置一个断点以找出正确的设置。然后根据需要在DSK文件中复制并调整此断点。

虽然找不到正确的行号,但这并不能解决问题。

答案 2 :(得分:0)

是*)

可以使用汇编程序代码插入断点(请参阅How to simulate a Delphi breakpoint in code?):

asm int 3 end;

在您需要断点的地方自动插入(和删除)此代码是一项微不足道的任务,因为执行源代码检测的工具(例如Delphi和其他语言的分析器)显示。

我不是说这很容易,但可能。

*)如果您是程序员; - )