Gibt es eine Möglichkeit zum Debuggen von c++ - dll-Aufruf aus C# DllImport?
Frage ich mich, ob es eine Möglichkeit zum Debuggen von c++ - dll-Aufruf aus C# PInvoke in VS 2010. Ich habe versucht, um zu befestigen, das Projekt in c# - Anwendung, aber es hat nicht funktioniert - nicht anhalten an einem Haltepunkt.
Versuchte ich auch alles aufzeichnen mit OutputDebugString in C++ - Projekt, aber nichts gedruckt mit PInvoke-Aufruf. Trotz dieser Probleme, die eigentliche Funktion gut läuft.
Jede Beratung wird geschätzt.
- Dies könnte helfen, aber es sieht aus wie Sie brauchen den .pdb-Datei zu tun etwas sinnvolles: social.msdn.microsoft.com/Forums/en-US/vsx/thread/...
- Natürlich, die ein Projekt hat .pdb-Datei, aber es war egal. Siehe Hans Antwort.
- BTW, können Sie drucken von Nachrichten in der DLL. Aber in der Lage sein zu sehen, wie diese Nachrichten in der Konsole, bauen Sie die DLL im debug-Modus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Beide erfordern das einschalten der option: Projekt - > Eigenschaften - > Registerkarte "Debuggen" > Häckchen bei "Enable unmanaged code debugging" - option.
Können Sie jetzt setzen Sie einen breakpoint im native-DLL-code, wird es wiederum von hohl solide, sobald die C# - Projekt die DLL geladen wird. Und OutputDebugString() ausgegeben wird, gehen Sie zu dem Ausgabe-Fenster, Dank an die nicht verwaltete Debuggen engine verwendet wird.
Wenn Sie eine C++ - debugger, während das Programm ausgeführt wird, und dann gehen Sie zu Debug->An den Prozess Anhängen->Finden Sie Ihren Prozess und legen Sie es. Sie sollten in der Lage sein, um zu Debuggen.
Stellen Sie sicher, dass Sie zusammengestellt haben, die DLL mit dem debugger Symbole. (.pdb-Datei), und, dass Sie in das Verzeichnis, in dem Sie die Dinge laufen aus.
Beim anbringen, ändern Sie die "Anhängen" - Wert auf "Native". Der Prozess sollte nicht ausgeführt werden, unter dem managed-code-debugger - statt "Debug", verwenden Sie das "Ausführen" - Befehl zu starten.
Auch, die DLL kompiliert werden muss mit debug-Informationen für eine sinnvolle debugging stattfinden. Stellen Sie sicher, dass Sie nicht P/Aufrufen der Release-build.
Die OutputDebugString() sollte funktionieren, unabhängig von debugging-Modus, jedoch.