Debugging von library unter Windows



  • Servus,

    ich habe ein Plugin für ein Programm, zu dem ich weder Sourcecode noch Debuginformationen (pdbs) habe. Das Programm läd über LoadLibrary() mein plugin. Dabei kommt es zu einem Error 998 (Invalid Memory Access), wenn meine plugin (shared library) im release-mode übersetzt ist.

    Wenn die library im debug-mode übersetzt ist, kommt ein Meldungsfenster
    von Visual Studio, in dem ich auf "Abort" oder "Retry" klicken können soll. Da steht "click retry to debug the program", woraus ich schließe, dass er dann den Visual Studio post mortem debugger an dieser Stelle starten würde.

    Allerdings kann ich dieses Fenster nicht klicken! Weder bei Abort noch bei Retry erfolgt irgendeine Reaktion. Meine einzige Möglichkeit ist dann, das Programm über den Taskmanager abzuschießen.

    Warum funktioniert dieses Dialogfeld nicht?
    Und wie kann ich unter Windows eine .dll debuggen, wenn das Programm, dass die dll läd, keine debuginformationen hat?

    Unter Linux geht das problemlos.
    Unter Windows habe ich keine Ahnung. Außerdem habe ich noch nie mit dem Visual Studio Debugger gearbeitet, immer nur mit gdb.

    Wie finde ich die Stelle, wo die Access Violation auftritt?

    Philipp



  • Öffne dein dll Projekt in Visual Studio und starte es im Debug Modus. Dann sollte automatisch ein Dialog kommen der nach einer exe fragt die die dll lädt. Gibt den Pfad zur exe ein und gut ist. Alle entsprechenden Einstellungen findest du in den Projekteigenschaften unter Debugging...



  • Jep, danke, dass scheint zu funktionieren.



  • Dein Meldungs Fenster im Debug Mode ist ein ASSERT. Der wird in Deinen Code eingebaut und hat nichts mit dem Crash zu tun.

    Damit Du den Debugger bei einem Crash anschließen kannst musst Du "Just In Time Debugging" einschalten in den VS Optionen.

    Noch einfacher ist es einfach über dasDebug Menü an einen Prozess wähernd der Laufzeit zu attachen. Dann kannst Du bei vorhandensein der PDB Datei auch Breakpoint setzen.


Anmelden zum Antworten