VS findet PDB-Datei von genutzter Bibliothek nicht



  • Hiho,

    ich möchte gerne in eine Bibliothek reindebuggen. Mein Projektaufbau ist der folgende. Meine eigene Solution hat mehrere Projekte: eine Anwendung und mehrere DLL-Projekte. Diese nutzen die Lib MyGUI. Diese ist in einer anderen Solution kompiliert. Zugriff erfolgt über die myGUIENgine.dll. Diese benutzt selbst wiederrum statische Biblitoheken, u. a. die OgrePlatform.lib. Ich habe den Aufbau man schnell skizziert: http://www.bilder-upload.eu/show.php?file=c158cc-1463748112.jpg

    Ich möchte nun in die OgrePLatform.lib hineindebuggen. Dazu setze ich myGUIENgine als Startprojekt, starte die Debug-Version von meinem Viewer (von außerhalb des VS) und hänge mich an den Prozess an. Alternativ habe ich probiert, die exe in den Debug-Optionen als Befehlsargument anzugeben. In beiden Fällen startet der Viewer, aber die Debuginfos für die OgrePlatform.lib sind nicht da. Wenn ich im Modulfenster schaue, sind die PDBs für meinen Viewer und auch für die OgrePlatform.lib geladen.

    Ich habe alle PDBs mit in den Ordner kopiert, wo auch meine Viewer.exe liegt. Die PDB für die statische lib habe ich in den Projektoptionen umbenannt, damit sie nicht vc140.pdb heißt, sondern Ogreplatform.lib. Hat bisher alles nichts geholfen. So langsam habe ich keine Idee mehr, was ich tun muss, damit das klappt.

    Evtl hat hier jemand Vorschläge. Danke!

    VG

    Pellaeon



  • Debug-Symbole von statischen LIBs werden mit in das .PDB der EXE bzw. DLL gepackt.
    D.h. es ist ganz normal dass der Debugger beim Debuggen kein .PDB File für eine .LIB lädt.



  • Bist du dir da sicher? Ich habe das Problem jetzt lösen. Ich hatte die PDB der statischen Lib mit in dem Ordner liegen, wo auch die .lib-Datei ist. Die DLL, welche die statische Lib benutzt, liegt aber woanders. Nachdem ich die PDB der statischen Lib mit in den Ordner der DLL kopiert hatte, ging es endlich. Das spricht doch eher dafür, dass die Symbole der statischen Lib nicht mit in der PDB vom ausführbaren Modul sind.

    VG

    Pellaeon


  • Mod

    hustbaer hat vollkommen recht. Bei statische Libs werden die Debug Infos kopiert. Eine PDB umfasst immer die Debug Infos eines ausführbaren Modules, komplett. Und diese Datei wird vom Linker aufgebaut. Der Linker kann aber nur das in die PDB packen, was er auch zur Verfügung hat.

    Schau in den LIB Folder, der VC Installation. Alle statischen Libs der CRT und der MFC haben auch die dazugehörige PDB Datei. Diese wird aber später nicht mehr benutzt.

    Siehe auch:
    http://stackoverflow.com/questions/7575298/static-library-debug-symbols
    http://stackoverflow.com/questions/17052406/pdb-files-with-libraries-in-visual-studio-10


Log in to reply