Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   D7 und Debug in dll (https://www.delphipraxis.net/101390-d7-und-debug-dll.html)

hanspeter 12. Okt 2007 10:52


D7 und Debug in dll
 
Hallo,
ich habe ein kleines Problem beim Debuggen einer dll mit Delphi 7.
Ich aktiviere eine dll im Projekt.
Unter Start definiere ich die Hostanwendung.
Nach dem Start sind in der dll keine Haltepunkte vorhanden.
Auch das Einschalten der Schalter TD32 und externe Symbole bringt nichts.
Hat wer einen Tip ?

Mit Gruß
Peter

s-off 12. Okt 2007 10:56

Re: D7 und Debug in dll
 
Hallo,

das Debuggen einer DLL, gerade unter WinXP, ist nicht ganz trivial. Dazu gibt es einige Threads, wahrscheinlich auch hier in der Delphi-PRAXIS - einfach mal die Suche bemühen :wink:

sirius 12. Okt 2007 11:01

Re: D7 und Debug in dll
 
Was machst du?

Also ich debugge unter D/ auch DLLs (eigens geschriebene natürlich)
du musst dazu zwei dinge beachten:
1. Start-> Startparameter die Hostanwendung angeben (hast du anscheinend ja) und [ok] drücken (nicht [laden])
2. Die DLL muss als ausgabeverzeichnis auch dort liegen, dass die Hostanwendung sie laden würde und nicht irgendeine alte Kopie. Also am besten unter den Projektoptionen das Ausgabeverzecihnis ins Verzeichnis der Hostanwendung legen (oder wo du auch immer in der Hostanwendung die DLL erwartest.


[Edit:Post #999 :mrgreen: ]

s-off 12. Okt 2007 11:51

Re: D7 und Debug in dll
 
Hallo,

Zitat:

Zitat von SDC
{****}

Bis und mit W2k hat es gereicht, unter Start=>Parameter=>HostAnwendung eine
EXE an zu geben, welche die DLL lädt. Dies reicht leider bei Windows XP nicht mehr

Damit Delphi die DLL beim Ausführen des Programmes erkennt,
muss folgendes gemacht werden:

Das Programm muss die DLL laden. Danach Ctrl-Alt-M innerhalb von Delphi drücken,
um die Module aufzulisten. Unter umständen wird hier die DLL ohne Pfadangabe angezeigt.
Wenn dies der Fall ist, handelt es sich um das hier beschriebene Problem.


Lösung:

Auf die DLL klicken, über die rechte Maustaste "Symbole neu laden" anklicken und
dann den kompletten Pfad zur DLL angeben. Jetzt sind die Breakpoints aktiv.

Falls die DLL in einen Systempfad compiliert wird (ein Verzeichnis im PATH),
besteht dieses Problem nicht.

Quelle

hanspeter 12. Okt 2007 12:20

Re: D7 und Debug in dll
 
Wie schon sinnigerweise gesagt
"das Debuggen einer DLL, gerade unter WinXP, ist nicht ganz trivial."

Die dll ist ein Hydra (Remobjects) Plugin.
Hier gibt es wohl ein Problem beim Umschalten zwischen den Quelltexten.
Ich weis noch nicht warum, aber nach einigen Rumklicken und Neustarten von
Delphi geht es dann irgendwann.
Zwischen der dll und der Anwendung befindet sich ja noch das Plugin-Framework.
Mit Remotedebug scheint es aber erst mal zu gehen.
Ich muß heute abend mal probieren, ob der Effekt unter D2007 auch noch auftritt.

Gruß
Peter

hanspeter 15. Okt 2007 12:44

Re: D7 und Debug in dll
 
Also ich habe jetzt weiterprobiert und muss feststellen,
das Testen einer Dll ist mit Delphi einfach eine Zumutung.

An der Pfadzuordnung liegt es nicht. Zur Laufzeit ist das Modul mit vollen Pfad spezifiziert.
Ich habe das zu testende Modul auch mal probeweise nach Windows\system32 gebracht, was ohne Wirkung war.
Bei dem jeweils aktivierten Modul werden nach der Compilierung die blauen möglichen Haltepunkte angezeigt.
Exakt mit dem Programmstart verschwinden diese und nach Programmende sind diese wieder da.
Ich habe noch keinen Zusammenhang herausbekommen, warum es ab und zu geht.
Bei D7 gibt es wohl keinen Menüpunkt "Symbole neu laden" oder ich habe diesen noch nicht gefunden.


Gruß
Peter

Elvis 15. Okt 2007 15:18

Re: D7 und Debug in dll
 
Ich würde dir empfehlen, das ganze mal in der Hydra newsgroup zu fragen.
Bis vor kurzem haben viel der RO-Jungs selber noch D7 benutzt, d.h.: Sie werden das wohl selbst erlebt und irgendwie behoben haben...

kersm 5. Nov 2007 07:28

Re: D7 und Debug in dll
 
Hallo,

habe denke ich dass gleiche Problem.
Aber bei mir funktionierts auf W2k mit TurboDelphi nicht.
Jedoch aber auf WinXP mit der gleichen TurboDelphi Version.

Habe alle Projekt/Optionen kontrolliert: sie sind ident.
Einzig die Pfade sind unterschiedlich, aber für jedes der beiden Systeme richtig.

Beim Laden der DLL auf WinXP kommt im Ereignis Protokoll: 'Enthält Debug-Infos' und alles funktioniert.
Aber beim Laden auf dem W2k kommt: 'Ohne Debug-Infos'.

Am W2k System habe ich keine Admin Rechte. Es hat aber beim allerersten Versuch die Dll zu debuggen funktioniert, allerdings seitdem nicht mehr.

Bitte um eure Hilfe...

mfg
Martin


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