DLL debuggen
-
Hallo Forum.
Ich würde gerne eine selbstgeschriebene DLL debuggen, die ein Fremdprozess (in diesem Fall Matlab) aufruft. Ich habe es über "An Prozess anhängen" versucht, aber so geht es nicht.
Hat das schonmal jemand gemacht?
Danke im Voraus.
-
Ruf' in deiner DLL
DebugActiveProcess( DEBUG_ONLY_THIS_PROCESS );auf.
DebugActiveProcess()Greetz, Swordfish
-
Erst mal danke für den Tipp. Aber so ganz komme ich mit der MSDN nicht klar. Zu welchem Zeitpunkt muss ich das denn aufrufen, bei DllMain? Außerdem mache ich wohl noch irgendwas falsch, ich bekomme nämlich 0 zurück.
-
atlastraeger schrieb:
Ich würde gerne eine selbstgeschriebene DLL debuggen, die ein Fremdprozess (in diesem Fall Matlab) aufruft. Ich habe es über "An Prozess anhängen" versucht, aber so geht es nicht.
Hat das schonmal jemand gemacht?
Was geht nicht. Ich mache das permanent, gerade wenn ich Services und DLLs debugge die auch in Services verwendet werden.
Viel wichtiger: Hast Du denn Debug Symbol mit erzeugen lassen?
-
Gib' mal
#include <string> #include <windows.h> std::string get_errmsg( unsigned long error ) { void *buffer; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, 0, error, MAKELANGID( LANG_NEUTRAL, SUBLANG_DEFAULT ), reinterpret_cast< char* >( &buffer ), 0, 0 ); std::string errmsg = std::string( reinterpret_cast< char* >( buffer ) ); LocalFree( buffer ); return errmsg; } // ... BOOL WINAPI DllMain( HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved ) { if( fdwReason == DLL_PROCESS_ATTACH ) { if( DebugActiveProcess( DEBUG_ONLY_THIS_PROCESS ) ) { MessageBox( 0, get_errmsg( ).c_str( ), "Error:", MB_OK ); } } // ... }in deine DLL, würd' mich interessieren, was GetLastError() da in Textform liefert. Ach ja, das Projekt ist doch mit der Debug-Konfiguration Compiliert?
Greetz, Swordfish
-
ERROR_INVALID_PARAMETER sagt mir GetLastError()
Die DLL ist im Debug-Modus kompiliert.