Aufrufende Applikation und DLL debuggen unter Pelles C
-
Liebe Leute,
ich muß gestehen, daß ich mich das erste mal mit dem Kram befassen muß und wohl entsprechend doof anstelle. Ich bin gerade unter Win/Pelles C IDE unterwegs, eine main() in eine DLL umzupacken, kriege aber nicht hin, ein Projekt zusammenzuschnöseln, in dem sowohl aufrufende Applikation, als auch DLL debugbar bleiben.
Um die Codebasis zusammenzuhalten hab' ich schon jede Menge include guards drin, aber das ufert voll aus, die aufrufende Applikation springt die DLL zwar an, wie sie soll, aber ich bekomme halt immer nur Ergebnisse zurück ohne Debugeinsicht, ob die DLL mit oder ohne Debuginfo compiliert wurde oder nicht. Mal schnell 'ne Zeile in der DLL ändern geht nicht, ohne Projekt wechseln, compilieren zurück zum Projekt Ich nutze den Mechanismus die Funktionen über GetProcAddress zu ermitteln.Wie geht das lässiger, ohne von Pelle persönlich als "ignorant bogus poster" beschimpft zu werden?
Hoffe wirklich, einer weiß das ...
EDIT: Heißt wirklich nicht ausfufend ... noch ausrufend ...
-
ich hab das mal nach dem schema gemacht:
///////// DLL code /////// // exported function extern "C" __declspec(dllexport) void f1(void) { .... } // exported function extern "C" __declspec(dllexport) void f2(void) { .... } ... // DLL entry function BOOL APIENTRY DllMain(HANDLE hModule, DWORD dwReason, LPVOID lpReserved) { .... .... return TRUE; } ///////// Test code /////// #ifdef TEST_DLL int main (void) { ... DLLMain (...); f1(); // dll funktionen testen f2(); ... } #endif
^^dann zwei projekt-settings angelegt, eines definiert TEST_DLL, dann erzeugts mir ein normales programm, dass die DLL testet und mit dem ich im dll-code herumdebuggen kann. das andere projekt (ohne TEST_DLL) baut dann eine richtige dll (auch ohne debug-infos). wenn die dll durchgetestet ist, gilt sie als 'fehlerfrei' und braucht in der applikation nicht weiter debuggt zu werden d.h. wenn die app beim dll-benutzen zickt, kanns nur noch am aufruf selbst liegen.
-
OK, Du blendest die main einfach ggf. aus.
Ich hab' gehofft, daß das irgendwie eleganter geht, dürfte ja nicht so unüblich sein - geht aber so natürlich auch.
-
pointercrash() schrieb:
Ich hab' gehofft, daß das irgendwie eleganter geht...
meine methode ist ziemlich allgemein, so ähnlich teste ich auch code, der später in 'nem mikrocontroller laufen soll, sogar komplette treiber und so, indem die zielhardware an den PC angeschlossen wird. entwickeln, testen und debuggen am PC ist meist einfacher als auf dem target. jedenfalls mach ich sowas öfter, dass ein modul gleich seine eigenen unit-tests beinhaltet usw.
ach ja, mit'm msvc (express?) jedenfalls geht dll-debugging auch noch anders: http://msdn.microsoft.com/en-us/library/c91k1xcf(VS.71).aspx
-
Boah ist das kompliziert, da lobe ich mir ein einfaches libtool gdb my_prog zum Debuggen von Anwendung + Bibliothek.