AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Debuggen einer DLL

Ein Thema von ngott2 · begonnen am 28. Aug 2014 · letzter Beitrag vom 28. Aug 2014
Antwort Antwort
Seite 1 von 2  1 2   
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Debuggen einer DLL

  Alt 28. Aug 2014, 07:08
Hallo,
ich habe angefangen meine erste DLL zu Programmieren klappt so weit auch ganz gut. Nun wollte ich gestern was Debuggen und musste leider feststellen das die Haltepunkte nicht gesetzt werden.

Ich habe ein Host Projekt ausgewählt. Das Abgabeverzeichnis der DLL entspricht den Pfad meiner Host Anwendung. Selbst wenn ich meine DLL Compiliere geht er wenn in der DLL eine unabgefange Exception auftritt in die Hostanwendung rein.

Die beiden Projekte sind in einer Projektgruppe.

Hat jemand eine Idee woran es liegen kann das ich in der DLL nicht Debuggen kann ?
Die Sachen die ich im Internet gefunden habe funktionieren leider nicht.

Nutze Delphi XE6.

Vielen Dank im Voraus.
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.487 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 07:10
Hast Du den richtigen Eintrag in der Projektgruppe aktiviert?
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#3

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 07:14
Wie meinst du das ? Was ist der richtige Eintrag ?
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#4

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 08:33
In Dll-Projekten zu debuggen gestaltet sich nicht einfach. Auch bei mir werden Haltepunkte in Dll-Projekten nicht angesprungen, und das völlig unabhängig davon, ob ich im Debug- oder Release-Modus starte. Ich behelfe mir mit Debugbreakpoints, indem ich den Befehl ASM INT 3 End; an die Stelle setze, die ich normalerweise mit einem Haltepunkt versehen würde.

Weitere Links zum Thema:

Embarcadero-Debugger
StackOverflow
DLL debuggen - nur noch CPU-Haltepunkte?
Debugger-Meldung "ntdll.DbgBreakPoint" verhindern
Tipps&Tricks zum Debuggen einer DLL
How to debug a DLL called from a DLL in Delphi
Breakpoint not honored while debugging a DLL
Google
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.330 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 08:49
Eigentlich gibt es da gar keine Probleme. Wichtig ist nur eine Sache:
Debuginformationen und externe Debuginformationen müssen in den Projektoptionen aktiviert sein. Am besten für Hostanwendung und DLL gleichermaßen.

Dann sollte es problemlos möglich sein in den Quelltexten beider Projekte normal Haltepunkte zu verwenden und von der Hostanwendung in die DLL und umgekehrt zu debuggen.
(EDIT: Übrigens auch, wenn man die Hostanwendung startet und das DLL Projekt einfach nur in der Projektgruppe liegt, man muss nicht unbedingt das DLL Projekt mit Hostanwendung starten.)

EDIT2:
@Perlsau: Ich sehe schon, das steht in einem deiner Links auch. Deine Assemblerlösung ließ mich das nicht vermuten.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!

Geändert von jaenicke (28. Aug 2014 um 08:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 08:53
Irgendwie mache ich das dann komisch, denn bislang hatte ich keinerlei Probleme damit eine DLL zu debuggen.
  • DLL-Projekt und ein Projekt was die DLL verwendet in eine Projektgruppe
  • Abhängigkeiten des Projekts definiert (benötigt das DLL-Projekt)
  • Ausgabepfade angepasst (die erzeugten EXE/DLL Dateien im gleichen Verzeichnis)
  • Beide Projekte auf Debug
  • Einen Haltepunkt im DLL-Projekt setzen
  • Das normale Projekt starten und schwupps wird an dem Haltepunkt in der DLL brav angehalten
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 09:04
In Dll-Projekten zu debuggen gestaltet sich nicht einfach. Auch ...
Dem kann ich eigentlic nicht zustimmen.

Egal ob DLL und EXE als Host gedebuggt wird,
die EXE, in welcher die DLL "zufällig" geladen wird
oder eine andere DLL, mit einem Host der die eigentliche DLL läd,
es lässt sich alles meistens problemlos Debuggen.

Auch ob die DLL statisch, delayed oder dynamisch geladen wird, macht keinen Unterschied.
Sobald der Debugger die Debuginfos der geladenen Module (EXE, DLL, BPL und selbst wenn die DLL nicht DLL heißt) findet, versteht und läd, ist oftmals alles OK.
Ob er die Debuginfos fand, kann man

Es gibt nur Probleme, wenn der Debugger die Debuginfos nicht findet, womit er dann die Positionen der Zeilen nicht kennt.
Genauso ist es blöd, wenn veraltete Debuginfos geladen werden, da dann die Zeilen mit den Codeadressen nicht mehr übereinstimmen.
Oder beim Compilieren von Projekten/Projektgruppen mit unterschiedlichen Ausgabe- und Suchpfaden.
Oder beim externen Kompilieren (z.B. FinalBuilder) mit anderen Projekteinstellungen (z.B. reingehacktem Eurekalog) oder wenn das Skript nach dem Kompilieren "aufräumt".

Eventuell kann es auch besser sein das Programm erst zu starten und es dannach mit dem Debugger zu verbinden.


  • Beide Projekte auf Debug
Besch* Einstellungen sollte man natürlich vermeiden.
* Release
* oder "exotische" Compilereinstellungen (nur weil der Punkt "Debug" heist, muß er noch lange nicht auf De)
* auch im Code kann der Compiler gesteuert wurden sein
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (28. Aug 2014 um 09:19 Uhr)
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#8

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 09:29
Wenn ich die DLL Debugge kann ich auch meine Host Anwendung Debuggen. Aber meine DLL ignoriert meine Versuche leider weiterhin.
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#9

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 09:31
Irgendwie mache ich das dann komisch, denn bislang hatte ich keinerlei Probleme damit eine DLL zu debuggen.
  • Abhängigkeiten des Projekts definiert (benötigt das DLL-Projekt)
Wie definiert man diese Abhängigkeit ?
  Mit Zitat antworten Zitat
ngott2

Registriert seit: 26. Aug 2013
81 Beiträge
 
Delphi 10 Seattle Professional
 
#10

AW: Debuggen einer DLL

  Alt 28. Aug 2014, 09:45
Funktioniert jetzt. War ein Problem mit dem Pfad der Hostanwendung und den Pfad der Ausgabe der Hostanwendung.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 02:45 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