为什么有时需要重新启动Delphi7才能使调试器工作

为什么有时需要重新启动Delphi7才能使调试器工作,delphi,ide,crash,debugging,Delphi,Ide,Crash,Debugging,每天至少4次,我需要重新启动Delphi以使调试器再次在断点处停止。有时,我可以通过在代码重建后附加到进程来欺骗它重新工作。但是大多数时候我不能,而且我要花很多时间回去重新打开我想要的所有文件 几乎每次发生这种情况时,我都会在尝试关闭Delphi时遇到某种致命错误。这有什么解决办法吗?我有最新的Delphi7,在WinXP上运行,内存充足。我办公室的其他大多数人也有这个问题 调试时,您是正常退出程序,还是使用IDE强制调试以停止/终止应用程序?我发现使用IDE强制应用程序关闭会在重新启动IDE一

每天至少4次,我需要重新启动Delphi以使调试器再次在断点处停止。有时,我可以通过在代码重建后附加到进程来欺骗它重新工作。但是大多数时候我不能,而且我要花很多时间回去重新打开我想要的所有文件


几乎每次发生这种情况时,我都会在尝试关闭Delphi时遇到某种致命错误。这有什么解决办法吗?我有最新的Delphi7,在WinXP上运行,内存充足。我办公室的其他大多数人也有这个问题

调试时,您是正常退出程序,还是使用IDE强制调试以停止/终止应用程序?我发现使用IDE强制应用程序关闭会在重新启动IDE一段时间后导致问题,而从应用程序中退出程序不会导致此类问题


警告:我的经验是使用Delphi 6。

在调试时,您是正常退出程序,还是使用IDE强制调试来停止/终止应用程序?我发现使用IDE强制应用程序关闭会在重新启动IDE一段时间后导致问题,而从应用程序中退出程序不会导致此类问题


警告:我的经验是使用Delphi 6。

我们使用Delphi 7的经验与您的类似:IDE中经常发生崩溃,出现抽象错误、无效指针引用和VCL库中的异常

这似乎取决于您加载的项目的复杂性:我们的主要项目是一个200000多行程序,包含多个MDI表单和第三方库。实际上,无论何时退出Delphi,我们都必须处理灾难性的致命错误。我们非常擅长使用任务管理器来搜索Delphi32进程并将其杀死,这实际上是有时唯一的出路


我们已经升级到德尔福2009年,它有显着更好的稳定性。我的感觉是Delphi 7有很多bug,你要么不得不忍受它们,要么升级。

我们使用Delphi 7的经验与你的类似:IDE中经常发生崩溃,出现抽象错误、无效指针引用和VCL库中的异常

这似乎取决于您加载的项目的复杂性:我们的主要项目是一个200000多行程序,包含多个MDI表单和第三方库。实际上,无论何时退出Delphi,我们都必须处理灾难性的致命错误。我们非常擅长使用任务管理器来搜索Delphi32进程并将其杀死,这实际上是有时唯一的出路


我们已经升级到德尔福2009年,它有显着更好的稳定性。我的感觉是Delphi 7有很多bug,你要么不得不忍受它们,要么升级。

我在D7中也遇到过这种情况——但实际上只有一个特定的项目——诚然,非常大,有很多表单和自制的自定义组件。其他一些同样大的项目也不错

我的感觉是,它在某种程度上与使用从其他框架/表单派生的框架和/或表单有关,在这些框架和/或表单中,您将在IDE/调试器中打开子代表单,而不是祖先表单

因为,就像你一样,我觉得每天关闭并重新启动IDE六次是一件非常痛苦的事情,我不辞辛劳地为项目创建了一个.DSK文件,其中包含了所有父表单内容,因此当Delphi启动该项目时,它会“自动”打开所有其他表单。一旦确定DSK的内容正确,我就将.DSK文件设置为只读

这意味着编辑器会“忘记”我当时打开的文件,但至少它会自动打开所有似乎使IDE“正常”的东西。如果我打算在几天内处理一些特定的文件,我只需要手动将它们添加到.DSK文件中

我似乎还记得Delphi会对文件的只读性提出一些暂时的抱怨,但这种方法消除了我们每天80%的痛苦


然后我做的另一件事是让任务管理器加载,最小化,作为我系统启动的一部分。至少在那个时候,ALT-TAB只是一个简单的例子,它能让IDE死机-

我在D7中也有过这一点,但事实上只有一个项目非常大,有许多表单和自制的定制组件。其他一些同样大的项目也不错

我的感觉是,它在某种程度上与使用从其他框架/表单派生的框架和/或表单有关,在这些框架和/或表单中,您将在IDE/调试器中打开子代表单,而不是祖先表单

因为,就像你一样,我觉得每天关闭并重新启动IDE六次是一种巨大的痛苦,我接受了这种痛苦 能够为项目创建一个.DSK文件,其中包含所有父表单内容,因此当Delphi启动该项目时,它会“自动”打开所有其他表单。一旦确定DSK的内容正确,我就将.DSK文件设置为只读

这意味着编辑器会“忘记”我当时打开的文件,但至少它会自动打开所有似乎使IDE“正常”的东西。如果我打算在几天内处理一些特定的文件,我只需要手动将它们添加到.DSK文件中

我似乎还记得Delphi会对文件的只读性提出一些暂时的抱怨,但这种方法消除了我们每天80%的痛苦


然后我做的另一件事是让任务管理器加载,最小化,作为我系统启动的一部分。至少在那个时候,ALT-TAB只是一个简单的例子,它能让IDE死机-

好的,根据我之前对这个问题的回答,这里是一个示例DSK文件。我不能将此作为对我的回复的评论,否则我会:-

他们真的没什么大不了的,他们很直截了当,浏览一下应该会帮助你看到这一点。实际上,我建议您只需加载Delphi,在环境或编辑器中打开“autosave desktop”(自动保存桌面)选项,我忘了是哪个选项,在打开各种源文件的情况下按需要排列IDE,等等,然后保存/关闭项目。您将在项目目录中找到一个MyProject.dsk etc文件,只需将该文件设置为只读,或者按照您在评论中链接到的文章中的建议进行操作,并将其备份到您随时可以带回的地方

无论如何,这里有一个DSK示例,让您了解您正在玩什么。它们只是INI类型的文本文件,如果您愿意,可以在记事本中对其进行破解:-

[Modules] Module0=C:\Projects\GUIPlay\src\du_FrameUtils.pas Module1=C:\Projects\GUIPlay\src\du_BaseDialogs.pas Module2=C:\Projects\GUIPlay\src\dm_DataMain.pas Module3=C:\Projects\GUIPlay\src\du_Main.pas Count=4 EditWindowCount=1 [C:\Projects\GUIPlay\src\du_FrameUtils.pas] ModuleType=SourceModule FormState=1 FormOnTop=0 [C:\Projects\GUIPlay\src\du_BaseDialogs.pas] ModuleType=SourceModule FormState=1 FormOnTop=0 [C:\Projects\GUIPlay\src\dm_DataMain.pas] ModuleType=SourceModule FormState=1 FormOnTop=1 [C:\Projects\GUIPlay\src\du_Main.pas] ModuleType=SourceModule FormState=1 FormOnTop=1 [C:\Program Files\Borland\Delphi7\Projects\ProjectGroup1.bpg] FormState=0 FormOnTop=0 [C:\Projects\GUIPlay\src\GUIPlay.dpr] FormState=0 FormOnTop=0 [C:\Projects\GUIPlay\src\GUIPlay.todo] FormState=0 FormOnTop=0 [EditWindow0] ViewCount=4 CurrentView=2 View0=0 View1=1 View2=2 View3=3 CodeExplorer=CodeExplorer@EditWindow0 MessageView=MessageView@EditWindow0 Create=1 Visible=1 State=0 Left=212 Top=157 Width=1127 Height=757 MaxLeft=-1 MaxTop=-1 ClientWidth=1119 ClientHeight=723 LeftPanelSize=140 LeftPanelClients=CodeExplorer@EditWindow0 LeftPanelData=000004000000000000000000000000000000000000000000000100000000000000000C000000436F64654578706C6F726572FFFFFFFF RightPanelSize=0 BottomPanelSize=0 BottomPanelClients=MessageView@EditWindow0 BottomPanelData=00000400010000000B0000004D6573736167655669657700000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF [View0] Module=C:\Projects\GUIPlay\src\du_FrameUtils.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View1] Module=C:\Projects\GUIPlay\src\du_BaseDialogs.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View2] Module=C:\Projects\GUIPlay\src\dm_DataMain.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View3] Module=C:\Projects\GUIPlay\src\du_Main.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [Watches] Count=0 [Breakpoints] Count=0 [AddressBreakpoints] Count=0 [Main Window] Create=1 Visible=1 State=2 Left=0 Top=0 Width=1571 Height=143 MaxLeft=-1 MaxTop=-1 MaxWidth=1579 MaxHeight=143 ClientWidth=1571 ClientHeight=109 [ProjectManager] Create=1 Visible=1 State=0 Left=1188 Top=135 Width=345 Height=762 MaxLeft=-1 MaxTop=-1 ClientWidth=337 ClientHeight=736 TBDockHeight=305 LRDockWidth=438 Dockable=1 [AlignmentPalette] Create=1 Visible=0 State=0 Left=200 Top=144 Width=156 Height=84 MaxLeft=-1 MaxTop=-1 ClientWidth=150 ClientHeight=60 [PropertyInspector] Create=1 Visible=1 State=0 Left=3 Top=147 Width=272 Height=783 MaxLeft=-1 MaxTop=-1 ClientWidth=264 ClientHeight=757 TBDockHeight=783 LRDockWidth=272 Dockable=1 SplitPos=85 ArrangeBy=Name SelectedItem=Name ExpandedItems= HiddenCategories= [ObjectTree] Create=1 Visible=0 State=0 Left=0 Top=142 Width=190 Height=314 MaxLeft=-1 MaxTop=-1 ClientWidth=182 ClientHeight=288 TBDockHeight=314 LRDockWidth=190 Dockable=1 [CodeExplorer@EditWindow0] Create=1 Visible=1 State=0 Left=0 Top=12 Width=140 Height=711 MaxLeft=-1 MaxTop=-1 ClientWidth=140 ClientHeight=711 TBDockHeight=305 LRDockWidth=140 Dockable=1 [MessageView@EditWindow0] Create=1 Visible=0 State=0 Left=12 Top=0 Width=1107 Height=66 MaxLeft=-1 MaxTop=-1 ClientWidth=1107 ClientHeight=66 TBDockHeight=66 LRDockWidth=443 Dockable=1 [DockHosts] DockHostCount=0 正如你所看到的,这实际上是一个要重新打开的文件列表,以及一些关于窗口位置/大小和打开文件顺序的感觉


祝你好运-

好的,根据我之前对这个问题的回答,这里是一个示例DSK文件。我不能将此作为对我的回复的评论,否则我会:-

他们真的没什么大不了的,他们很直截了当,浏览一下应该会帮助你看到这一点。实际上,我建议您只需加载Delphi,在环境或编辑器中打开“autosave desktop”(自动保存桌面)选项,我忘了是哪个选项,在打开各种源文件的情况下按需要排列IDE,等等,然后保存/关闭项目。您将在项目目录中找到一个MyProject.dsk etc文件,只需将该文件设置为只读,或者按照您在评论中链接到的文章中的建议进行操作,并将其备份到您随时可以带回的地方

无论如何,这里有一个DSK示例,让您了解您正在玩什么。它们只是INI类型的文本文件,如果您愿意,可以在记事本中对其进行破解:-

[Modules] Module0=C:\Projects\GUIPlay\src\du_FrameUtils.pas Module1=C:\Projects\GUIPlay\src\du_BaseDialogs.pas Module2=C:\Projects\GUIPlay\src\dm_DataMain.pas Module3=C:\Projects\GUIPlay\src\du_Main.pas Count=4 EditWindowCount=1 [C:\Projects\GUIPlay\src\du_FrameUtils.pas] ModuleType=SourceModule FormState=1 FormOnTop=0 [C:\Projects\GUIPlay\src\du_BaseDialogs.pas] ModuleType=SourceModule FormState=1 FormOnTop=0 [C:\Projects\GUIPlay\src\dm_DataMain.pas] ModuleType=SourceModule FormState=1 FormOnTop=1 [C:\Projects\GUIPlay\src\du_Main.pas] ModuleType=SourceModule FormState=1 FormOnTop=1 [C:\Program Files\Borland\Delphi7\Projects\ProjectGroup1.bpg] FormState=0 FormOnTop=0 [C:\Projects\GUIPlay\src\GUIPlay.dpr] FormState=0 FormOnTop=0 [C:\Projects\GUIPlay\src\GUIPlay.todo] FormState=0 FormOnTop=0 [EditWindow0] ViewCount=4 CurrentView=2 View0=0 View1=1 View2=2 View3=3 CodeExplorer=CodeExplorer@EditWindow0 MessageView=MessageView@EditWindow0 Create=1 Visible=1 State=0 Left=212 Top=157 Width=1127 Height=757 MaxLeft=-1 MaxTop=-1 ClientWidth=1119 ClientHeight=723 LeftPanelSize=140 LeftPanelClients=CodeExplorer@EditWindow0 LeftPanelData=000004000000000000000000000000000000000000000000000100000000000000000C000000436F64654578706C6F726572FFFFFFFF RightPanelSize=0 BottomPanelSize=0 BottomPanelClients=MessageView@EditWindow0 BottomPanelData=00000400010000000B0000004D6573736167655669657700000000000000000000000000000000000100000000000000000B0000004D65737361676556696577FFFFFFFF [View0] Module=C:\Projects\GUIPlay\src\du_FrameUtils.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View1] Module=C:\Projects\GUIPlay\src\du_BaseDialogs.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View2] Module=C:\Projects\GUIPlay\src\dm_DataMain.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [View3] Module=C:\Projects\GUIPlay\src\du_Main.pas CursorX=1 CursorY=1 TopLine=1 LeftCol=1 [Watches] Count=0 [Breakpoints] Count=0 [AddressBreakpoints] Count=0 [Main Window] Create=1 Visible=1 State=2 Left=0 Top=0 Width=1571 Height=143 MaxLeft=-1 MaxTop=-1 MaxWidth=1579 MaxHeight=143 ClientWidth=1571 ClientHeight=109 [ProjectManager] Create=1 Visible=1 State=0 Left=1188 Top=135 Width=345 Height=762 MaxLeft=-1 MaxTop=-1 ClientWidth=337 ClientHeight=736 TBDockHeight=305 LRDockWidth=438 Dockable=1 [AlignmentPalette] Create=1 Visible=0 State=0 Left=200 Top=144 Width=156 Height=84 MaxLeft=-1 MaxTop=-1 ClientWidth=150 ClientHeight=60 [PropertyInspector] Create=1 Visible=1 State=0 Left=3 Top=147 Width=272 Height=783 MaxLeft=-1 MaxTop=-1 ClientWidth=264 ClientHeight=757 TBDockHeight=783 LRDockWidth=272 Dockable=1 SplitPos=85 ArrangeBy=Name SelectedItem=Name ExpandedItems= HiddenCategories= [ObjectTree] Create=1 Visible=0 State=0 Left=0 Top=142 Width=190 Height=314 MaxLeft=-1 MaxTop=-1 ClientWidth=182 ClientHeight=288 TBDockHeight=314 LRDockWidth=190 Dockable=1 [CodeExplorer@EditWindow0] Create=1 Visible=1 State=0 Left=0 Top=12 Width=140 Height=711 MaxLeft=-1 MaxTop=-1 ClientWidth=140 ClientHeight=711 TBDockHeight=305 LRDockWidth=140 Dockable=1 [MessageView@EditWindow0] Create=1 Visible=0 State=0 Left=12 Top=0 Width=1107 Height=66 MaxLeft=-1 MaxTop=-1 ClientWidth=1107 ClientHeight=66 TBDockHeight=66 LRDockWidth=443 Dockable=1 [DockHosts] DockHostCount=0 正如你所看到的,这实际上是一个要重新打开的文件列表,以及一些关于窗口位置/大小和打开文件顺序的感觉


祝你好运-

提示1:Ctrl+Shift+Esc是任务管理器的快捷方式,如果在系统启动时未启动,也可以使用。提示2:可以将进程资源管理器设置为替换任务管理器相同的kbd快捷方式,并执行更多操作。强烈推荐!如何生成.DSK文件?我已经删除了我的.DST文件,但没有任何帮助。我看到这个和你说的很像。但我不知道.DSK文件包含什么。DSK是“桌面”文件,它包含关于您在IDE中打开的文件的信息以及其他内容。如果选中环境选项“保存桌面”,则Delphi将在项目旁边的文件夹中生成/更新dsk文件。我将做一个简单的例子,并在这里张贴很快!你链接的那篇文章很有趣,但最后他们所建议的其实是一种更灵活、更优雅的保护dsk的方法。事实上,我非常喜欢他们的方法-Delphi不太喜欢您将DSK文件设置为只读,这是我廉价且令人愉快的解决方案-提示1:Ctrl+Shift+Esc是任务管理器的快捷方式,如果在系统启动时未启动,也可以使用。提示2:可以将进程资源管理器设置为替换任务管理器相同的kbd快捷方式,并执行更多操作。强烈推荐!如何生成.DSK文件?我已经删除了我的.DST文件,但没有任何帮助。我看到这个和你说的很像。但我不知道.DSK文件包含什么。DSK是“桌面”文件,它包含关于您在IDE中打开的文件的信息以及其他内容。如果选中环境选项“保存桌面”,则Delphi将在项目旁边的文件夹中生成/更新dsk文件。我将做一个简单的例子,并在这里张贴很快!你链接的那篇文章很有趣,但最后他们所建议的其实都是一个mo
我们采用灵活优雅的方式保护dsk。事实上,我非常喜欢他们的方法-Delphi不太喜欢您将DSK文件设置为只读,这是我廉价且令人愉快的解决方案-项目中有COM对象吗?nope的>10个字母的单词是什么?项目中有COM对象吗?nope的>10个字母的单词是什么?