首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

VS2010 調試時出現「Cannot find or open the PDB file」的解決方案

     編輯:關於C語言

問題現象

在 Visual Studio 2010 中調試呼叫某個 API 時,返回的句柄始終為 NULL,GetLastError() 返回錯誤碼 126(ERROR_MOD_NOT_FOUND),表示 LoadLibrary 載入動態連結庫失敗。重新配置專案後,輸出視窗顯示大量系統 DLL 的 PDB 符號檔案找不到訊息:

Loaded 'C:\Windows\System32\ntdll.dll', Cannot find or open the PDB file
Loaded 'C:\Windows\System32\kernel32.dll', Cannot find or open the PDB file
Loaded 'C:\Windows\System32\KernelBase.dll', Cannot find or open the PDB file
...

這看起來很嚴重,實際上只是缺少系統 DLL 的偵錯符號,不影響程式邏輯執行。

根本原因

程式的輸出路徑被設定到了系統目錄(如 C:\Windows\System32),而非專案的建置輸出目錄。這導致偵錯器嘗試載入系統 DLL 的符號檔,但找不到對應的 .pdb 檔案。

解決方法

  • 方法一: 使用 Ctrl + F5(不偵錯啟動)直接執行程式。
  • 方法二: 在命令提示字元(cmd)中手動執行編譯好的 .exe 檔案。
  • 方法三(建議): 檢查專案屬性 → 組態屬性 → 連結器 → 一般 → 輸出檔案,確保輸出路徑指向專案的 Debug 或 Release 目錄,而非系統目錄。

補充說明

「Cannot find or open the PDB file」僅表示偵錯符號缺失,不會導致 LoadLibrary 失敗。真正的錯誤 126 通常是因為:

  1. 依賴的 DLL 不在系統搜尋路徑中
  2. DLL 位元數不匹配(32 位元程式載入 64 位元 DLL 或反之)
  3. DLL 內部有未滿足的相依性

建議使用 Dependency Walker 或 Process Monitor 進一步診斷 DLL 載入失敗的具體原因。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved