DLL Debuggen

ulmi

Mitglied
Hallo,

wie kann ich eigentlich in Visual Studio 2003 eine DLL debuggen?
Ich habe zwar in den Projekteigenschaften eine Anwendung festgelegt, aber alle Breakoints in der DLL werden scheinbar ignoriert.
Oder ist es nicht möglich, eine DLL zu debuggen?
 
Doch das DLL-Debuggen funktioniert eigentlich ganz gut. In den Projektoptionen bei Konfigurationseigenschaften->Debuggen->Befehl die Anwendung festlegen und dann mit F5 das Debuggen starten. Anwendung und DLL sollten zusammenpassen, d.h. die Anwendung sollte auch als Debug-Version vorliegen.

Gruß
MCoder
 
Genau so hab ichs ja probiert,aber nicht reagiert!
Ich habe 2 Projekte:
Projekt 1 ist die zu debuggende DLL
Projekt 2 ist die Testumgebung für die DLL

Ich kann über F5 in Projekt1 ohne Problem Projekt2 ausführen, aber sämtliche in Projet1 gesetzten Breakpoints werden übergangen. Es muß auch die DLL aus Projekt1 genommen werden, das diese in den Verzeichnissen von Projekt2 nicht vorhanden ist.
Das Anwendung und die DLL passen, da ich bisher beide als Debug compiliert habe.

Aber irgendwas hakt bei mir noch.

Update:

Ich vermute mal das der Einstiegspunkt nicht stimmt.
Wenn ich
Code:
BOOL APIENTRY DllMain( HANDLE hModule, 
                       DWORD  ul_reason_for_call, 
                       LPVOID lpReserved
					 )
{
    switch (ul_reason_for_call)
	{
		case DLL_PROCESS_ATTACH:
		case DLL_THREAD_ATTACH:
		case DLL_THREAD_DETACH:
		case DLL_PROCESS_DETACH:
			break;
    }
    return TRUE;
}
verwende bekomme ich ne Linker Warnung, daß schon ein einstiegspunkt in der .obj vorhanden wäre.
Code:
UFMTLAN error LNK2005: _DllMain@12 already defined in UFMTLAN.obj
Aber ich kann diesen nirgendwo finden bzw abändern. Erstellt habe ich die DLL als leeres Projekt und habe dann den Rest manuell hinzugefügt.
 
Zuletzt bearbeitet:
Die DLL ist als Debug compiliert.
Die pdb ist im DLL-Debugverzeichnis.
Auch wenn ich das Arbeitsverzeinis auf das Debugverzeichnis der DLL umlege, wird nicht angehalten.

Dshalb vermute ja die Geschichte mit dem Einstiegspunkt.
 
Der Einstiegspunkt ist ok; den switch-Block darin brauchst du nicht. Der Linker-Fehler hat mit den Projekteinstellungen zu tun. Am besten du setzt das Projekt noch mal neu auf: Nimm dann statt "Leeres Projekt" die Vorlage "Win32-Projekt" und setze bei den Anwendungseinstellungen den Anwendungstyp auf "DLL".

Gruß
MCoder
 
Habe ich gemacht.
Mein ursprüngliches Projekt war als Win32 Projetct->DLL->Empty Project angelegt worden.
Nun habe ich es mal ohne Empty Project versucht, aber den gleichen Linker Fehler bekommen.
Jetzt Versuch ich es mal mit Exports.
 
Code:
UFMTLAN error LNK2005: _DllMain@12 already defined in UFMTLAN.obj
Aber ich kann diesen nirgendwo finden bzw abändern. Erstellt habe ich die DLL als leeres Projekt und habe dann den Rest manuell hinzugefügt.
Liegt wohl irgendwie am Rest, den du noch hinzugefügt hast. Funktioniert denn ein leeres DLL-Projekt ohne weiteren Code?

Gruß
MCoder
 
Wenn möglich, versuche doch Stück für Stück ein leeres DLL-Projekt mit den restlichen Sourcen oder Bibliotheken zu ergänzen, um festzustellen, was den Fehler verursacht.
 

Neue Beiträge

Zurück