![]() |
Debuggen einer DLL
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. |
AW: Debuggen einer DLL
Hast Du den richtigen Eintrag in der Projektgruppe aktiviert?
|
AW: Debuggen einer DLL
Wie meinst du das ? Was ist der richtige Eintrag ?
|
AW: Debuggen einer DLL
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
Delphi-Quellcode:
an die Stelle setze, die ich normalerweise mit einem Haltepunkt versehen würde.
ASM INT 3 End;
Weitere Links zum Thema: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
AW: Debuggen einer DLL
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. |
AW: Debuggen einer DLL
Irgendwie mache ich das dann komisch, denn bislang hatte ich keinerlei Probleme damit eine DLL zu debuggen.
|
AW: Debuggen einer DLL
Zitat:
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". :wall: Eventuell kann es auch besser sein das Programm erst zu starten und es dannach mit dem Debugger zu verbinden. Zitat:
* 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 |
AW: Debuggen einer DLL
Wenn ich die DLL Debugge kann ich auch meine Host Anwendung Debuggen. Aber meine DLL ignoriert meine Versuche leider weiterhin. :x
|
AW: Debuggen einer DLL
Zitat:
|
AW: Debuggen einer DLL
Funktioniert jetzt. War ein Problem mit dem Pfad der Hostanwendung und den Pfad der Ausgabe der Hostanwendung. :oops:
|
AW: Debuggen einer DLL
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:00 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 by Thomas Breitkreuz