Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
调试断点不存在´;t仅在DataModule单元中工作-Delphi_Delphi_Debugging_Breakpoints_Datamodule - Fatal编程技术网

调试断点不存在´;t仅在DataModule单元中工作-Delphi

调试断点不存在´;t仅在DataModule单元中工作-Delphi,delphi,debugging,breakpoints,datamodule,Delphi,Debugging,Breakpoints,Datamodule,调试断点在我的系统的所有其他38个单元中都可以正常工作。但是,在我的DataModule中,有+-10.000行,delphi在我通过F9/F8/F7启动之后禁用了它。在该单元的源代码的任何部分中,甚至在OnCreate、SQLConnection.Active等引发性步骤中:=true,等等。 细节:工作正常,直到+-20天前。 我使用的是D7,并且有所有的组件来源。 谢谢 Felipe尝试进行完整构建(Shift+F9)。如果这不起作用,那么如果你使用下面的方法会发生什么 asm int 3

调试断点在我的系统的所有其他38个单元中都可以正常工作。但是,在我的DataModule中,有+-10.000行,delphi在我通过F9/F8/F7启动之后禁用了它。在该单元的源代码的任何部分中,甚至在OnCreate、SQLConnection.Active等引发性步骤中:=true,等等。 细节:工作正常,直到+-20天前。 我使用的是D7,并且有所有的组件来源。 谢谢 Felipe

尝试进行完整构建(Shift+F9)。如果这不起作用,那么如果你使用下面的方法会发生什么

asm int 3 end;

检查datamodule源文件的多个副本。有时,您认为正在运行的代码不是编译器和调试器看到的代码

接下来,请确保您没有意外地使用{$D-}或{$DEBUGINFO off}关闭代码中的调试。这可以关闭单个单元的调试信息

此外,请确保已在工具|选项|调试器选项中启用集成调试。我知道你说过你可以在其他地方调试,但确保集成调试没有被意外关闭也无妨。

有一篇来自的博客文章,尽管如果你说你可以调试其他单元,我怀疑它们是否适用


Delphi5中的一个大数据模块也有同样的问题,它不允许我们调试它,这可能是因为它的文件太大,无法调试,而Delphi不喜欢它。当我们转到Delphi2007时,我们可以再次调试它。不知道为什么,没有任何更改(代码方面)。

Felipe是不允许您在正在移入或移出内存的dll中进行调试的单元吗?我在调试dll时发现,如果我在可执行文件中执行某些操作,在另一个dll中执行代码或卸载该dll,则问题单元所在的dll-Delphi将禁用所有断点。通常,重新启动Delphi并确保在内存中保留问题单元dll的单个实例是解决此问题的唯一方法


我怀疑大小是个问题,因为我有一个17k行的单元,我会定期调试。

我有一个模糊的记忆,在旧的D7中调试非常大的文件是有缺陷的。 试着把你的大单元分成几个类,如果你能在单元外调试的话,就把它分解成se。
另一个选项是关闭大文件中的debuginfo,但要调试的部分除外。值得一试。

我发现了这个问题。Delphi7中有一种奇怪的行为,它限制了接口类部分中的字段数量,介于:type TDM=class(TDataModule)和private部分之间。我删除了一些字段(数据集字段(+-40个字段))并再次运行degub。我再次添加这些字段,并且调试不会运行。我确信这是一个限制,因为它不匹配我删除的组件字段。我试着从不同的表中添加、测试和删除几个字段。很遗憾,但这是真的。。。
感谢您的帮助。

如果您稍后运行应用程序并收到“未处理的异常8000003”,那是因为您忘记删除上述说明。:-)在那里,做了那件事,把t恤穿了。谢谢。但是,这个文件只有一个副本。已找到并删除所有dcu,然后重新编译。已经在此单元和项目源文件中直接在源代码中写入了{D+}。是否在整个硬盘中搜索文件名?但是,您是否在所有源代码中搜索关闭调试的开关?我怀疑文件大小是个问题,因为我有一个组件库,其中包含一个9000行的实用程序函数文件,我可以很好地调试它。是的。我使用了Windows文件搜索,找到了每个同名副本,并将其删除。我犯了一些“源代码错误”,并重新编译以验证哪个文件正在使用,以及编译器报告的错误是否符合预期。来自同一项目的所有其他单元运行调试断点fineFelipe:添加ShowMessage('adsf');在您的OnCreate中重新编译。当您的消息没有显示时,您可能有多个副本(可能是一个旧的bpl文件?),或者您的类的名称不是唯一的,并且从另一个单元使用了另一个类。当你看到你的消息时,你的debuginfo中有一些东西。谢谢福克斯。我做了20天:使用ShowMessage调试本单元中的代码,显示变量值,但太难了。谢谢。我现在读了这篇文章并做了一些测试。同样的行为。我将尝试删除一些代码到其他单元,然后重试。谢谢Doug。但是,我不使用任何dll或bpl。我有所有组件的所有来源。此行为仅在所有程序代码的DataModule中发生。谢谢。我现在正在试这个。当我得到一些结果时,我会发布。大家好!我发现了这个问题。Delphi7中有一种奇怪的行为,它限制了接口类部分中的字段数量,介于:type TDM=class(TDataModule)和private部分之间。我删除了一些字段(数据集字段(+-40个字段))并再次运行degub。我再次添加此字段,调试不会运行。我确信这是一个限制,因为它不匹配我删除的组件字段。我尝试了几个,添加,测试和删除。很遗憾,但是真的。。。谢谢你的帮助。