簡體   English   中英

調試后 PDB 保持打開狀態(Windows 10、Visual Studio)

[英]PDB remains open after debugging (Windows 10, Visual Studio)

我們以前的開發系統使用 Windows XP 和 Windows 7。從 Visual Studio 調試 C++ DLL 效果很好。

最近遷移到 Windows 10 導致了一個惱人的問題。 我們可以調試一次(使用F5 ),但第二次會導致鏈接器錯誤:

MyProg fatal error LNK1201: error writing to program database 'MyProg.pdb'

在 Visual Studio 仍處於打開狀態時嘗試在資源管理器中手動刪除 .pdb 會導致錯誤:

The action can't be completed because the file is open in devenv.exe

是否遇到斷點並不重要。 一旦導致問題就開始調試。 重新啟動 Visual Studio 可以解決問題(從某種意義上說,您可以調試一次,但隨后又會出現問題)。

如果相關:

  • x86 Visual Studio 2003.NET
  • 針對另一個 x86 應用程序
  • x64 Windows 10 專業版 v1803

在搜索了幾個小時后,發現了一些相關但未得到解答的問題。 遵循此 MSDN 文章中的建議,以及我自己的一些調試,此解決方案有效:

  • 下載FreePDB ,由 MSDN 用戶Toni76編寫的腳本(感謝 Toni!)
  • 將此腳本復制到本地文件夾(例如C:\\Apps\\FreeDPB
  • 下載最新版SysInternals工具Handle (目前v4.21)
  • handle.exe復制到C:\\Apps\\FreeDPB
  • 注意! 從命令行運行handle /? 一次。 這是同意 EULA。 如果跳過這一步,腳本將無法運行!
  • 打開 Visual Studio,然后項目 > 屬性 > 生成事件 > 預生成事件
  • Command Line設置為C:\\Apps\\FreeDPB\\freepdb $(ProjectName)
  • Description設置為Delete lock on PDB

...現在您無需重新啟動 Visual Studio 即可進行第二次調試!

根據評論,這適用於多個版本的 Windows 上的多個版本的 Visual Studio。

更新

這里描述一個更激進的解決方案它涉及替換核心 Visual Studio DLL ( NatDbgDE.dll )。 不過,此解決方案僅適用於 Visual Studio 2003 SP1。

就我而言,這是由於“Process Explorer”程序與我的 Visual Studio 一起打開(我用它來檢查我創建的 exe 的某些屬性)。 關閉后問題解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM