2016-07-18 2 views
2

Nach dem Laden einer DLL-Bibliothek mit LoadLibrary("file.dll") öffnet und schließt Visual Studio auch file.pdb.Wie erzwingen Visual Studio 2015 zum Entsperren .PDB-Datei nach FreeLibrary-Aufruf?

Das Problem ist - die file.pdb bleibt gesperrt, auch nach dem Aufruf FreeLibrary(...).

Es ist notwendig, file.dll neu kompilieren und es einmal nachladen wieder (extern, außerhalb von MSVS, CL.exe mit), aber die Zusammenstellung schlägt fehl, weil file.pdb noch gesperrt ist.

Wie Visual Studio 2015 Freigabe der Datei sperren?

Zum Tools -> Options dann Debugging -> General, dann auf Use Native Compatibility Mode drehen:

Antwort

3

Einstimmend auf eine Lösung dieses Problems habe ich stolperte.

Dies behebt das Problem (z. B. PDB-Datei ist nach dem Entladen .dll jetzt entsperrt).

Ich habe keine Ahnung warum, wie ich die Dokumentation für Use Native Compatibility Mode nicht finden kann.

+0

Es ist eine VS2015-Einstellung, es zwingt den Debugger, eine ältere Debugging-Engine zu verwenden. Der in VS2013 verwendete. Sinnvolle Einstellung der neue Motor ist ziemlich fehlerhaft. Jemand sollte bei connect.microsoft.com einen Fehler melden, ich melde mich freiwillig. –

+0

@HansPassant Es wurde ein ähnlicher Fehler für MSVS 2013 gemeldet, der wie in "Nicht reparieren" https://connect.microsoft.com/VisualStudio/feedback/details/1026184/visual-studio-keeps-locking als geschlossen markiert ist -die-pdb-Datei-even-after-dll-is-released-using-freelibrary. Also habe ich mich nicht darum gekümmert. Es gibt auch einen interessanten Kommentar von Andrew Hall @ MSFT: "Leider hat der Visual Studio-Debugger das Entladen eines pdb-Programms beim Entladen der Binärdatei aus dem Prozess nie unterstützt. Das Debugging musste immer gestoppt werden." Vielleicht wurde es geändert? – JBeurer