Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Dateidialog im Debug-Mode: nervende Verzögerung (https://www.delphipraxis.net/185316-dateidialog-im-debug-mode-nervende-verzoegerung.html)

Perlsau 30. Mai 2015 10:33

Dateidialog im Debug-Mode: nervende Verzögerung
 
Moin allerseits

Wenn ich im Debug-Mode meines Delphi2009 einen Dateidialog (TOpenDialog) mit Execute öffne, dauert es teilweise bis zu einer Minute, bis ich dort eine Datei auswählen kann. Mir leuchtet zwar ein, daß der Delphi-Debugger auch den Dateidialog, der ja lediglich eine Methode der Win-API kapselt, analysiert, aber das nervt total. Gibt es eine Möglichkeit, Dateidialoge vom Debuggen auszunehmen?

himitsu 30. Mai 2015 10:37

AW: Dateidialog im Debug-Mode: nervende Verzögerung
 
Du kannst im Log dir merken welche DLLs geladen werden und baust dir in den Programmstart ein LoadLibrary ein, wo du diese schonmal vorlädst. (zumindestens die Wichtigsten davon)

Den Programmstart kann man beschleunigen, indem man nicht sofort losdebuggt (F9), sondern das Programm startet und sich erst dann zum Prozess verbindet, wenn es nötig ist. (Strg+Shift+F9 und Start > Mit Prozess verbinden)

Perlsau 30. Mai 2015 11:03

AW: Dateidialog im Debug-Mode: nervende Verzögerung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von himitsu (Beitrag 1303639)
Du kannst im Log dir merken welche DLLs geladen werden und baust dir in den Programmstart ein LoadLibrary ein, wo du diese schonmal vorlädst. (zumindestens die Wichtigsten davon)

Welche DLLs? Ich lade doch gar keine DLLs im Programm :roll:
Achso, du meinst die DLLs, die der OpenDialog benötigt, machen die Verzögerung aus? Müßte es dann nicht beim zweiten Aufruf von OpenDialog schneller gehen, wenn die DLLs vom ersten Aufruf bereits geladen wurden? Oder werden die gleich danach wieder entladen? Ich probier das mal mit dem LoadLibrary ...

Zitat:

Zitat von himitsu (Beitrag 1303639)
Den Programmstart kann man beschleunigen, indem man nicht sofort losdebuggt (F9), sondern das Programm startet und sich erst dann zum Prozess verbindet, wenn es nötig ist. (Strg+Shift+F9 und Start > Mit Prozess verbinden)

Das hab ich eben ausprobiert. Tatsächlich geht der OpenDialog nun ganz flott, aber: Wenn ich vor dem Programmende "mit Prozess verbinden" klicke, erscheint das CPU-Fenster, mit dem ich absolut nichts anzufangen weiß – hab nunmal keine Ahnung von Assembler (mehr). Der Prozeß, mit dem ich verbinden soll, ist doch mein laufendes Testprogramm, nicht wahr?

(Da will ich debuggen, weil ich da irgendwo eine Schutzverletzung und MemoryLeaks auslöse – siehe auch dort, wo ich gerade ein Problem von Delbor nachstelle und zu lösen verusche.)

himitsu 30. Mai 2015 11:14

AW: Dateidialog im Debug-Mode: nervende Verzögerung
 
Siehe Ereignislog ... viele der DLLs werden danach gleich wieder entladen.
Und beim Laden sucht und läd der Debugger auch noch die Debuginfos der DLLs ... das bremst schon ein bissl.


Mit Prozess verbinden:
  • Den Haken bei "Pause nach Verbindung" entfernen
  • und dann muß nur irgenwo ein Haltepunkt sein, welcher danach das Programm geziehl anhält ... es geht auch F4 (Bis Cursorposition ausführen) und dann warten, bis das Programm dort vorbei kommt.

Perlsau 30. Mai 2015 12:18

AW: Dateidialog im Debug-Mode: nervende Verzögerung
 
Zitat:

Zitat von himitsu (Beitrag 1303645)
Siehe Ereignislog ... viele der DLLs werden danach gleich wieder entladen.
Und beim Laden sucht und läd der Debugger auch noch die Debuginfos der DLLs ... das bremst schon ein bissl.

Das konnte ich auch beobachten und wußte dann nicht, welche DLLs ich laden sollte. Hab's verworfen ...

Zitat:

Zitat von himitsu (Beitrag 1303645)
Mit Prozess verbinden:
  • Den Haken bei "Pause nach Verbindung" entfernen
  • und dann muß nur irgenwo ein Haltepunkt sein, welcher danach das Programm geziehl anhält ... es geht auch F4 (Bis Cursorposition ausführen) und dann warten, bis das Programm dort vorbei kommt.

Das funktioniert einwandfrei :thumb:
Wieder was dazugelernt – hab Dank, Himitsu :wink:

himitsu 30. Mai 2015 12:31

AW: Dateidialog im Debug-Mode: nervende Verzögerung
 
Ach, einfach aus dem Log das Entladen danach kopieren (alternativ geht auch das Laden davor) und den Text um die Dateinamen durch
Delphi-Quellcode:
LoadLibrary(´
und
Delphi-Quellcode:
´);
ersetzen lassen.

PS:
Delphi-Quellcode:
if IsDebuggerPresent then


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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