F12 funktioniert nicht im Delphi Debugger unter Windows 7/8

8

Drücken Sie F12, während das Programm im Debugger ausgeführt wird, brechen Sie die Ausführung ab und öffnen Sie den Debugger. Dies funktioniert unter Windows XP (getestet mit D2007 und XE2), aber unter Windows 7 und 8 (auch getestet mit D2007 und XE2; getestet auf drei Computern).

Registrierung ist richtig eingerichtet (Windows 7):

  

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ AeDebug]   "UserDebuggerHotKey" = dword: 00000000   "Debugger"="\" C: \ Windows \ system32 \ vsjitdebugger.exe \ "-p% ld -e% ld"

     

[HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ AktuelleVersion \ AeDebug \ AutoExclusionList]   "DWM.exe" = dword: 00000001

Die XP-Installation legt auch "Auto"="1" fest und lässt die AutoExclusionList aus, aber das Duplizieren dieser Änderungen auf der Windows 7-Maschine erreicht nichts.

Das Seltsame ist, dass Delphi sich bewusst ist, dass der F12 gedrückt wird. Wenn ich ein Programm in einem Debugger auf einem Windows 7-Computer ausführen und F12 drücken, zeigt das Ereignisprotokollfenster in Delphi

an
  

Thread-Start: Thread-ID: 4080. Verarbeiten Sie Project73.exe (7108)

     

Thread-Ende: Thread-ID: 4080. Verarbeiten Sie Project73.exe (7108)

Es ist nur so, dass der Haltepunkt nicht ausgelöst wird und die Anwendung läuft weiter.

Weiß jemand, wie man diese Funktionalität in Windows 7/8 wiederherstellen kann?

    
gabr 20.12.2012, 10:48
quelle

1 Antwort

11

Der Debugger sieht, dass ein neuer Thread von Windows gestartet wird, aber er weiß nicht, was dieser Thread ist. In XP läuft dieser Thread in einen int 3 -Breakpoint ( DebugBreak() ), aber unter Vista und Windows 7+ wird der Breakpoint nicht mehr getroffen, selbst wenn Sie den Registrierungsschlüssel setzen.

Es gibt ein Delphi-IDE-Plugin, das den Thread abfängt und die WinAPI-Funktion DebugBreak () aufruft. Ссылка

    
Andreas Hausladen 20.12.2012, 10:54
quelle

Tags und Links