AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Dateidialog im Debug-Mode: nervende Verzögerung
Thema durchsuchen
Ansicht
Themen-Optionen

Dateidialog im Debug-Mode: nervende Verzögerung

Ein Thema von Perlsau · begonnen am 30. Mai 2015 · letzter Beitrag vom 30. Mai 2015
Antwort Antwort
Perlsau
(Gast)

n/a Beiträge
 
#1

Dateidialog im Debug-Mode: nervende Verzögerung

  Alt 30. Mai 2015, 10:33
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?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

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

  Alt 30. Mai 2015, 10:37
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mai 2015 um 10:39 Uhr)
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#3

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

  Alt 30. Mai 2015, 11:03
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
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 ...

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.)
Miniaturansicht angehängter Grafiken
mitprozessverbinden.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

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

  Alt 30. Mai 2015, 11:14
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

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

  Alt 30. Mai 2015, 12:18
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 ...

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
Wieder was dazugelernt – hab Dank, Himitsu
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 30. Mai 2015, 12:31
Ach, einfach aus dem Log das Entladen danach kopieren (alternativ geht auch das Laden davor) und den Text um die Dateinamen durch LoadLibrary(´ und ´); ersetzen lassen.

PS: if IsDebuggerPresent then
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (30. Mai 2015 um 12:36 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:46 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