Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Programm unter Debuggerkontrolle extrem langsam (https://www.delphipraxis.net/216625-programm-unter-debuggerkontrolle-extrem-langsam.html)

freimatz 30. Jan 2025 15:50

Programm unter Debuggerkontrolle extrem langsam
 
Hallo zusammen.
Delphi 12 Version 29.0.53571.9782
Wenn ich ein Programm unter Debuggerkontrolle starte so ist es extrem langsam so dass ein Entwickeln damit nichtmehr sinnvoll ist.
Es ist zum Beispiel ein Testprogramm mit UI. Ohne Debugger merke ich keine Verzögerung. Mit dauert das Starten extrem lang. Wenn ich z.B. in einem Baum einen Knoten aufklappte, dann kann man zusehen wie die Objekte der Reihe nach gemalt werden.
Auch bei einem Unittest-Programm mit DUnit (nicht DUnitX). Eine Projektdatei und eine unit mit einem Dummy test. Am Ende ein "RegisterTest('Dummy', TTest_Dummy.Suite);". In der UI dauert diese eine Test mehrere Sekunden.
Alle Programme die probiert habe sind betroffen.
In der Firma mit gleichem Delphi habe ich dieses Problem nicht.
Mit ProcMon habe ich nichts gefunden, bin mir aber auch nicht sicher ob ich den richtig eingestellt habe.
Wo könnte ich weiter forschen, welche Infos fehlen?

Sherlock 30. Jan 2025 16:11

AW: Programm unter Debuggerkontrolle extrem langsam
 
Virenscanner? Sonstige vermeintliche Helferlein?

freimatz 30. Jan 2025 16:46

AW: Programm unter Debuggerkontrolle extrem langsam
 
Hm, ich habe keinen speziellen. Habe nun bei "Einstellungen für Viren- & Bedrohungsschutz" bei "Ausschlüsse" mal das komplette Enticklungslaufwerk eingetragen. Hat nichts gebracht.

Noch etwas ist mir aufgefallen. Die erwähnte Testanwendung hat eine Möglichkeit eine Datei auszuwählen. Dazu erscheint ein Dialogfenster bei dem ich mir sicher bin, dass es das stadardmässige Windowsfenster ist. Auch dort ist das Verhalten beim Navigieren durch die Ordner extrem zäh.

himitsu 30. Jan 2025 16:47

AW: Programm unter Debuggerkontrolle extrem langsam
 
viele Logmessages im Delphi?

freimatz 30. Jan 2025 16:55

AW: Programm unter Debuggerkontrolle extrem langsam
 
Du meinst bei Events? Es hat welche beim Starten der Apps. Wenn ich den unit-test starte per Maus etliche (wm_SetCursor u.ä.). Wenn ich den Test mit der Tastatur starte dann keine Events (und ist trotzdem langsam)

jaenicke 30. Jan 2025 17:13

AW: Programm unter Debuggerkontrolle extrem langsam
 
Was passiert denn mit einem neuen Projekt, wenn du dort z.B. einfach eine Schleife in einen Buttonklick packst, die z.B. in der Caption die Schleifenvariable ausgibt. Passiert es dann auch?

Wie hoch ist dabei die CPU-Auslastung, wenn es so langsam ist?

Zitat:

Zitat von freimatz (Beitrag 1545790)
Hm, ich habe keinen speziellen.

Der Defender ist leider für die Softwareentwicklung echt ungünstig, weil der doch deutlich bremst. Auf manchen Systemen hat der den größten Teil der CPU-Leistung gefressen, so dass fast gar nichts mehr ging. Wenn es daran liegt, siehst du das aber im Taskmanager an der Auslastung der entsprechenden Prozesse direkt.

mlc42 30. Jan 2025 18:26

AW: Programm unter Debuggerkontrolle extrem langsam
 
viele oder komplexe Watchausdrücke an?

freimatz 30. Jan 2025 19:12

AW: Programm unter Debuggerkontrolle extrem langsam
 
@mlc42: 0

@jaenicke: Habe ein neues Projekt erzeugt, VCL Anwendung:

Delphi-Quellcode:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);
begin
  for var i := 1 to 10000
  do begin
    Label1.Caption := IntTostr(i);
    Application.ProcessMessages;
  end;
end;

end.
Ohne Debugger ist der Vorgang in knapp einer Sekunde durch, die Zahl ist kaum zu sehen, erst dann am Schluss. Mit Debugger:
CPU-Auslastung laut Prozessexplorer (16Kerne)
Project1.exe: knapp ein 1%
bds.exe: ca. 5.58
procexp64: ca. 5%
dwm.exe: 0,5%
Rest darunter

Weitere Beobachtung: die Zahl sieht man gemütlich nach oben zählen (gefühlt 10 Schritte/s). Wenn ich mir der Maus über das Fenster fahre, dann zählt es nur nur sehr sporadisch. Auch da gibt es keine Events, auch nichts im ProcMon.

jaenicke 30. Jan 2025 21:40

AW: Programm unter Debuggerkontrolle extrem langsam
 
Das geht um Delphi 11? Könntest du vielleicht Delphi 12 (ggf. Trial) auf dem Rechner ausprobieren?
Für die Eingrenzung des Problems wäre das sehr hilfreich.

Und auch wenn die CPU-Auslastung nicht darauf hindeutet, solltest du es mal mit deaktiviertem Defender probieren.

freimatz 31. Jan 2025 08:18

AW: Programm unter Debuggerkontrolle extrem langsam
 
Zitat:

Zitat von freimatz (Beitrag 1545787)
Delphi 12 Version 29.0.53571.9782

:?:

Wie kann man den Defender deaktiveren? Und wie heißt der Prozess dazu eigentlich?

Frickler 31. Jan 2025 09:04

AW: Programm unter Debuggerkontrolle extrem langsam
 
Zitat:

Zitat von freimatz (Beitrag 1545814)
Wie kann man den Defender deaktiveren? Und wie heißt der Prozess dazu eigentlich?

Einstellungen, in das Suchfeld "Defender" eingeben und auf "Viren- & Bedrohungsschutz" gehen, Bei "Einstellungen für Viren- & Bedrohungsschutz" auf den Link "Einstellungen verwalten" klicken, dort kann man den "Echtzeitschutz" ausschalten.

Rollo62 31. Jan 2025 09:24

AW: Programm unter Debuggerkontrolle extrem langsam
 
Zitat:

Zitat von jaenicke (Beitrag 1545804)
Und auch wenn die CPU-Auslastung nicht darauf hindeutet, solltest du es mal mit deaktiviertem Defender probieren.

Man kann ja auch Verzeichnisse ausschliessen, statt es komplett abzuschalten.
Die Frage ist nur immer, welche Verzeichnisse sollte man für die IDE ausschliessen, da bin ich immer etwas unsicher.
Ich meine die Zielverzeichnisse, wo DCU, EXE usw landen, reicht das schon, oder gibt es noch andere, temporäre Verzeichnisse?

jaenicke 31. Jan 2025 10:38

AW: Programm unter Debuggerkontrolle extrem langsam
 
Leider hilft der Ausschluss bestimmter Verzeichnisse bei solchen Problemen mit einem Virenscanner nicht unbedingt. Das hilft bei Fehlerkennungen. Wenn aber der Scanner trotzdem noch bei den Dateizugriffen aktiv wird und dann lediglich den Scan für bestimmte Dateien nicht durchführt, kann es Probleme mit Dateizugriffen oder der Performance dennoch weiter geben.

himitsu 31. Jan 2025 11:11

AW: Programm unter Debuggerkontrolle extrem langsam
 
Drum hat Microsoft ja das DevelopDrive erfunden.
Ein Laufwerk/Verzeichnis, welches in einer virtuellen Festplatte liegt, welche Standardmäßig vom eigenen VirenScanner im LiveScan ignoriert wird.

(in Bezug auf Backup/Einzeldateiwiederherstellung/Schwachsinnigdoppeltedatensicherung muß man aber mit Abstrichen rechnen)

freimatz 31. Jan 2025 11:40

AW: Programm unter Debuggerkontrolle extrem langsam
 
Zitat:

Zitat von Frickler (Beitrag 1545817)
Einstellungen, in das Suchfeld "Defender" eingeben und auf "Viren- & Bedrohungsschutz" gehen, Bei "Einstellungen für Viren- & Bedrohungsschutz" auf den Link "Einstellungen verwalten" klicken, dort kann man den "Echtzeitschutz" ausschalten.

Danke. Ausprobiert, hat nicht geholfen. Außerdem die Einstellung "wird nach kurzer Zeit wieder aktiviert"

Ich habe gesehen, dass ich eine ältere Delphiversion habe. Ich versuche demnächst mal ein Update.

himitsu 31. Jan 2025 11:50

AW: Programm unter Debuggerkontrolle extrem langsam
 
Zitat:

Zitat von himitsu (Beitrag 1545826)
Drum hat Microsoft ja das DevelopDrive erfunden.

https://www.delphipraxis.net/215501-...klerzeugs.html

freimatz 4. Feb 2025 19:50

AW: Programm unter Debuggerkontrolle extrem langsam
 
Habe nun Embarcadero® Delphi 12 Version 29.0.53982.0329
Geholfen hat es leider nicht.

himitsu 4. Feb 2025 19:57

AW: Programm unter Debuggerkontrolle extrem langsam
 
Diese Version ist aber auch schon 3 Monate alt ... kein Wunder, wenn da von den Unmengen an Bugreports noch nichts behoben ist. :lol:

freimatz 11. Feb 2025 13:47

AW: Programm unter Debuggerkontrolle extrem langsam
 
Das Problem scheint mit 64 Bit nicht aufzutreten.
Ich werde mich wohl daran machen das umzustellen. Wird recht viel Aufwand, hat noch viel asm drin.

stahli 12. Feb 2025 14:11

AW: Programm unter Debuggerkontrolle extrem langsam
 
Ich kenne das Problem in der anderen Richtung durch timeBeginPeriod
Vielleicht führt das ja irgendwie zu einer Begründung...

https://www.delphipraxis.net/1350657-post15.html

freimatz 27. Feb 2025 08:07

AW: Programm unter Debuggerkontrolle extrem langsam
 
Sehe da nichts was ich tun kann. Einen Verwendung von Sleep sehe ich nirgendwo.
Die Umstellung auf 64-Bit ist extrem viel Aufwand. Dazu müsste ich für Ersatz von Methoden erst mal Unit-Tests machen. Was kaum geht weil - siehe oben.
Kann man Delphi beim Debuggen unter 32-Bit nicht veranlassen sich auch so zu verhalten wie unter 64-Bit, also mit dieser Bridge?

jaenicke 27. Feb 2025 08:13

AW: Programm unter Debuggerkontrolle extrem langsam
 
Du kannst den Remotedebugger lokal verwenden.

freimatz 27. Feb 2025 08:36

AW: Programm unter Debuggerkontrolle extrem langsam
 
Was meinst Du damit. Ich habe noch nie verstanden was mit dem "Remotedebugger" gemeint ist.
Ich habe nun das Programm gestartet ohne Debug-Kontrolle und dann danach "Attach to Process..." gemacht. Das?
Und da funktioniert es nun - juhu.

jaenicke 27. Feb 2025 08:55

AW: Programm unter Debuggerkontrolle extrem langsam
 
Der Remotedebugger funktioniert so, dass du auf einem Rechner diesen als Prozess startest und dann mit Delphi von einem anderen Rechner aus damit verbindest und auf dem Remoterechner aus der Ferne debuggst. Das funktioniert auch per VPN beim Kunden, wenn auch sehr langsam.

In diesem Fall würdest du den dann lokal starten. Und du kannst auch den Prozess mit dem Remotedebugger starten.

Wenn es aber mit dem Verbinden funktioniert, ist das ein einfacherer Workaround. Um direkt mit dem Debugger zu starten, kannst du sowas einbauen:
Delphi-Quellcode:
while not IsDebuggerPresent do
  Sleep(100);
Dann wartet das Programm an der Stelle (z.B. in der Projektdatei nach dem begin), bis du mit dem Debugger verbunden hast. Du darfst das halt nur nicht versehentlich einchecken. Du kannst das zur Sicherheit natürlich z.B. nur machen, wenn eine Datei oder Umgebungsvariable da ist, die es nur auf dem Entwicklungs-PC gibt.

freimatz 27. Feb 2025 14:55

AW: Programm unter Debuggerkontrolle extrem langsam
 
Danke für alles. Dann kann ich endlich mal weiter machen.
Wegen Remotedebugger, ah inzwischen weiss ich es das ist ein separates Tool, der PA_Server.

himitsu 27. Feb 2025 15:22

AW: Programm unter Debuggerkontrolle extrem langsam
 
Es gibt den Remote-Debugger und den PAServer.

Der Debugger ist nur zum Debuggen da, also Verbindung zwischen einer irgendwo liegenden Anwenung und dem Debugger (Delphi-IDE)
und der PAServer kann zusätzlich noch die Verteilung/Installation der kompilierten Anwendung übernehmen.

C:\Program Files (x86)\Embarcadero\Studio\23.0\bin\rmtdbg290.exe
C:\Program Files (x86)\Embarcadero\Studio\23.0\PAServer\setup_paserver.exe

https://docwiki.embarcadero.com/RADS..._Debug-Servers
https://docwiki.embarcadero.com/RADS...rver-Anwendung


PS: Da die DelphiIDE/Debugger 32 Bit ist und er somit keine 64 Bit-Anwendung debuggen kann,
wird dort automatisch der RemoteDebugger zwischengeschaltet.
Ebenso, wie für fremde Plattformen (Android/iOS/OSX/Linux), beim Debuggen, immer ein PAServer dazwischen hängt.

freimatz 27. Feb 2025 17:55

AW: Programm unter Debuggerkontrolle extrem langsam
 
Hallo,
Danke für Eure Informationen. Bin nun noch mehr verwirrt. Ich habe nun sehr viele Informatioen wie man remote debuggen kann, was ein "Remote-Debug-Server" ist und wie man ihn benutzt. Aber ich weiss immer noch nicht was das ist, was Ihr (und EMB) mit "Remote-Debugger" bezeichnet. Zumindest einer meiner Kollege versteht etwas anderes darunter. Ist es etwa die dbkw64_29_0.exe? Ist es eine Anwendung? Eine dll? Ein Teil der bds.exe? Nur ein Konzept?

Zitat:

Zitat von himitsu (Beitrag 1546636)
PS: Da die DelphiIDE/Debugger 32 Bit ist und er somit keine 64 Bit-Anwendung debuggen kann, wird dort automatisch der RemoteDebugger zwischengeschaltet.

Und kann man Delphi dazu bringen, das auch bei 32-Bit zu tun?

himitsu 27. Feb 2025 18:35

AW: Programm unter Debuggerkontrolle extrem langsam
 
Nja, der RemoteDebugger (aber auch der PAServer)
stellen eine Debugschnittstelle auf einem anderen PC bereit (oder auch auf dem Selben),
damit dein lokaler Debugger (Delphi) ein "entferntes" Programm debuggen kann.

Bei 32 <> 64 Bit muß das sein.
ein 64-Bit-Debugger kann "auch" direkt 32-Bit-Programme debuggen ... nur andersrum geht es nicht.
Drum werden Win64-Programme intern immer über einen lokalen Remotedebugger gehandhabt (ohne dass du es merkst).

Und ja, man kann damit natürlich auch lokale 32-Bit-Programme debuggen.
Die RemoteDebugger-EXE lokal starten und dann Run -> mit Prozess verbinden -> localhost.




Die dbkw64_29_0.exe (Embarcadero Debugger Kernel) dürfte das sein, was Delphi intern als lokalen-RemoteDebugger für Win64 benutzt.
(der versucht auch keinen Port nach außen zu öffnen, so wie die rmtdbg290.exe)

[edit] Hmmm, die rmtdbg290.exe (auch ein Embarcadero Debugger Kernel) ist ja auch nur 32 Bit ... dann wir das wohl doch nur für Win32-Programme sein (war nie auf die Idee gekommen auch mal Win64 remote zu debuggen)


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:34 Uhr.

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