Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi nerviges CPU Debugging Fenster (https://www.delphipraxis.net/94224-nerviges-cpu-debugging-fenster.html)

Ajin 18. Jun 2007 14:32


nerviges CPU Debugging Fenster
 
Hi,

Ich weiss zwar nicht wieso, aber seid neuestem hält mein Programm beim Ausführen immer in einem CPU Fenster. Ich habe nix dergleichen eingestellt aber jedesmal wenn meine TWebbrowser Komponente eine Aktion startet kommt der CPU Debugger zum Vorschein.

Kann man das nicht abstellen?

Hawkeye219 18. Jun 2007 14:42

Re: nerviges CPU Debugging Fenster
 
Hallo Jaimy,

Nick Hodges berichtet in seinem Blog über Probleme mit Logitech-Produkten. Trifft das in deinem Fall vielleicht auch zu?

Gruß Hawkeye

Ajin 18. Jun 2007 14:48

Re: nerviges CPU Debugging Fenster
 
Ah löl genau. Das könnte stimmen, denn ich hab mir kürzlich eine Logitech Cam gekauft und die SW installiert. Aber ich nutze einen 2006er Turbo...

Bernhard Geyer 18. Jun 2007 14:57

Re: nerviges CPU Debugging Fenster
 
AFAIK ist das Problem das diese Hersteller DLL's mit Debuginfos bzw. gesetzte Breakpoints installieren. Und darauf reagieren alle Win32-Delphi-IDE's (Ist ja auch der Sinn einer IDE auf sowas zu reagieren).

dataspider 19. Jun 2007 14:07

Re: nerviges CPU Debugging Fenster
 
Hi,

ich hatte ein ähnliches Problem beim Start aus Delphi.
Ich habe dann folgende Lösung irgendwo im InderNet :wink: gefunden:

Delphi-Quellcode:
unit KillCPUWindow;

interface

uses
  Types, SysUtils, Windows;

implementation

  procedure PatchINT3;
  var
    NOP : Byte;
    NTDLL: THandle;
    BytesWritten: DWORD;
    Address: Pointer;
  begin
    if Win32Platform <> VER_PLATFORM_WIN32_NT then Exit;
    NTDLL := GetModuleHandle('NTDLL.DLL');
    if NTDLL = 0 then Exit;
    Address := GetProcAddress(NTDLL, 'DbgBreakPoint');
    if Address = nil then Exit;
    try
      if Char(Address^) <> #$CC then Exit;

      NOP := $90;
      if WriteProcessMemory(GetCurrentProcess, Address, @NOP, 1, BytesWritten) and
        (BytesWritten = 1) then
        FlushInstructionCache(GetCurrentProcess, Address, 1);
    except
      //Do not panic if you see an EAccessViolation here, it is perfectly harmless!
      on EAccessViolation do ;
      else raise;
    end;
  end;

  initialization
    if DebugHook<>0 then
     PatchINT3;
end.
Vielleicht hilft es ja auch bei dir...

Frank

SirThornberry 19. Jun 2007 14:14

Re: nerviges CPU Debugging Fenster
 
nicht gerade die schönste Variante mit den Exit-Sprüngen (ähnlich wie goto natürlich Ansichtssache) aber letztendlich eine wirksame Methode da die Funktion für die Breakpoints gepatcht wird (unwirksam gemacht wird)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:27 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz