Delphi调试器崩溃(OpenDialog+;压缩exe)

Delphi调试器崩溃(OpenDialog+;压缩exe),delphi,debugging,topendialog,upx,Delphi,Debugging,Topendialog,Upx,几天前我遇到了一个奇怪的虫子 每当我的程序(在调试中)试图打开savedialog时,Delphi 2007 IDE就会崩溃,并出现外部异常。我把它缩小到任何包含由upx压缩的exe的文件夹 也就是说,如果文件夹中的所有exe都正常/未压缩,则一切正常。但是,如果其中一个exe文件已经用upx压缩,那么当opendialog试图打开该文件夹时,IDE就会崩溃 我怀疑Windows shell加载了exe模块(例如显示其图标),IDE注意到并尝试加载该exe的调试信息,并在该点崩溃 有没有办法解决

几天前我遇到了一个奇怪的虫子

每当我的程序(在调试中)试图打开savedialog时,Delphi 2007 IDE就会崩溃,并出现外部异常。我把它缩小到任何包含由upx压缩的exe的文件夹

也就是说,如果文件夹中的所有exe都正常/未压缩,则一切正常。但是,如果其中一个exe文件已经用upx压缩,那么当opendialog试图打开该文件夹时,IDE就会崩溃

我怀疑Windows shell加载了exe模块(例如显示其图标),IDE注意到并尝试加载该exe的调试信息,并在该点崩溃

有没有办法解决这个问题?我的测试程序附后

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    SaveDialog1: TSaveDialog;
    procedure FormClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormClick(Sender: TObject);
begin
  SaveDialog1.Execute()
end;

end.
更新:添加了带有IDE堆栈跟踪的屏幕截图

这可能是由于外壳的扩建导致房屋倒塌。请尝试禁用扩展,直到确定是哪个扩展造成的。您可以始终启用
选项
属性中的
ofOldStyleDialog
标志。该对话框在现代Windows计算机上可能看起来很糟糕,但它不会承载资源管理器实例,因此不会加载任何Shell扩展。David,这是干净的Win10安装。Remy,试过了,但还是失败了。发生这种情况时,您可能想发布调用堆栈。@AntonDuzenko是否使用IDE附加组件?Cn包、G专家、IDE补丁包等?或者这是一个干净的D2k7安装?