PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [VS 2010]Per COM geladene managed DLL lässt sich nicht debuggen


Gast
2013-07-22, 16:38:44
Hi Leute,

Folgende Ausgangssituation: ich habe ein Programm, das offenbar managed ist (nicht selbst programmiert, kein Quellcode verfügbar), dieses lädt per COM eine DLL, die managed ist und für die Quellcode zur Verfügung steht. Da die DLL per COM geladen wird, steht nicht fest, dass die DLL managed zu sein hätte, das Programm würde auch eine native DLL akzeptieren. Die fragliche DLL ist aber managed.

Um sicherzustellen, dass die DLL mit dem zur Verfügung stehenden Quellcode übereinstimmt und debugfähig ist, habe ich sie aus dem Quellcode neu erstellt, als Debug-Version, unter Visual Studio 2010. Ich habe die neu erstellte DLL auch korrekt im COM-System registriert mittels

RegAsm <DLL-Name> /codebase

Wenn ich nun aber das Programm starte und die DLL laden lasse und dann von Visual Studio 2010 aus die DLL per "An Prozess anhängen" debuggen will, dann werden die im Quellcode gesetzten Breakpoints deaktiviert, und ich erhalte, wenn ich den Mauszeiger auf einen der deaktivierten Breakpoints bewege, die Meldung:

"Der Haltepunkt wird momentan nicht erreicht. Für dieses Dokument wurden keine Symbole geladen."

Bei Google finde ich leider nichts zu dem Thema, das die Situation

Managed Prog <-> COM <-> Managed DLL

betreffen würde. Einzig fand ich den Hinweis, dass in den Projekteinstellungen der managed DLL die Option "Nicht verwaltetes Codedebugging aktivieren" gesetzt sein sollte, wenn die DLL von einem unmanaged Programm aus geladen wird (und COM ist ja unmanaged). Diese Option hat aber keine Wirkung.

Hat jemand ne Idee, wo das Problem liegen könnte?

Gast
2013-07-22, 17:20:47
PDB vorhanden bzw. im richtigen Verzeichnis?

Threadersteller
2013-07-22, 18:20:07
Die PDB liegt in dem Vezeichnes, aus dem das Programm die DLL lädt.

Threadersteller
2013-07-23, 10:31:49
Hm, offenbar klappt's folgendermaßen: statt erst das Programm zu starten und dann den Debugger per "An Prozess anhängen" anzuschmeißen, wähle ich in den Projekteinstellungen der DLL unter Debuggen -> Startaktion den Radiobutton "Externes Programm starten" aus und stelle dort als zu startendes externes Programm das gewünschte Programm ein, und starte dieses anschließend per Debugging starten aus Visual Studio heraus.

Elemental
2013-08-03, 18:53:59
Wenn so managed/unmanaged Sachen debuggen will, dann lohnt auch immer ein Blick in die Einstellungen, welchen Debugger VS verwendet.
Wenn z.B. der managed Debugger ausgewählt ist, dann bleiben die Breakpoints in unmanaged code inaktiv.