是否可以自动插入断点?例如,我需要在特定单元内的每个过程的开始和退出处插入一个特定的(相同的)条件断点。手动执行此操作将是乏味且耗时的,因此我正在寻找一种自动执行此操作的方法。
3 回答
不,IDE 中没有这样做的功能。
根据您对原始问题的评论,您实际上要做的是检测全局(“公共”)变量的更改位置。这样做的方法是设置一个Data Breakpoint,它在变量更改时触发,然后查看调用堆栈以查看最后执行的代码。(您可以通过在 Delphi 2007 的帮助索引中搜索“断点,设置数据断点”或 XE4 帮助(如上链接)中的“断点属性,数据断点”在帮助文件中找到它。
请注意,两者都要求查看地址,但@VariableName
也可以使用。(使用堆栈(本地)变量会触发一个对话框,告诉您这样做会使您的应用程序不稳定并要求您确认是否要这样做。)
正如@DavidHeffernan 在评论中指出的那样,更好的解决方案是使公共字段成为具有设置器的属性,然后在该设置器内设置一个正常的断点。
断点存储在项目 DSK 文件的类似命名部分中。在 IDE 中手动设置一个断点以找出正确的设置。然后根据您的需要复制并调整 DSK 文件中的此断点。
但是,这并不能解决找出正确行号的问题。
是的 *)
可以使用汇编代码插入断点(请参阅如何在代码中模拟 Delphi 断点?):
asm int 3 end;
在您需要断点的地方自动插入(和删除)此代码是一项微不足道的任务,正如执行源代码检测的工具(例如 Delphi 和其他语言的分析器)所示。
我并不是说这很容易,而是可能的。
*) 如果你是程序员 ;-)