無法解析的斷點 (bu 斷點)
如果已針對尚未載入的例程名稱設定斷點,則斷點稱為延後、虛擬或未解析的斷點。 (這些詞彙可互換使用。無法解析的斷點不會與模組的任何特定負載相關聯。 每次載入新的應用程式時,都會檢查此例程名稱。 如果出現此例程,調試程式會計算虛擬斷點的實際編碼位址,並啟用斷點。
如果您使用 bu 命令來設定斷點,則斷點會自動視為未解決。 如果此斷點位於已載入的模組中,則斷點仍會啟用,且正常運作。 不過,如果模組稍後卸除並重載,此斷點就不會消失。 另一方面,您使用 bp 設定的斷點會立即解析為位址。
bp 斷點和 bu 斷點之間有三個主要差異:
bp 斷點位置一律會轉換成位址。 如果模組變更移動 bp 斷點設定所在的程式代碼,斷點會維持在相同的位址。 另一 方面,bu 斷點仍與使用的符號值(通常是符號加位移)相關聯,即使其位址變更,也會追蹤此符號位置。
如果在載入的模組中找到 bp 斷點位址,而且稍後卸除該模組,則會從斷點清單中移除斷點。 另一方面, bu 斷點會在重複卸除和載入之後保存。
您使用 bp 設定的斷點不會儲存在 WinDbg 工作區中。 使用 bu 設定的斷點會儲存在工作區中。
控制位址斷點和未解決的斷點
地址斷點可以使用 bp (Set Breakpoint) 命令建立,或在包含 /d 參數時建立 bm (設定符號斷點) 命令。 未解析的斷點可以使用 bu (Set Unresolved Breakpoint) 命令建立,或在未包含 /d 參數時建立 bm 命令。 停用、啟用和修改斷點的命令會套用至所有類型的斷點。 顯示斷點清單的命令包含所有斷點,並指出每個斷點的類型。 如需這些命令的清單,請參閱 控制斷點的方法。
[WinDbg 斷點 ] 對話框會顯示所有斷點,表示表示法為 “u” 的未解析斷點。 此對話框可用來修改任何斷點。 此對話方塊上的 [命令] 文本框可用來建立任何類型的斷點;如果省略類型,則會建立無法解析的斷點。 如需詳細資訊,請參閱 編輯 |斷點。 當您在 WinDbg 反組譯碼視窗或 [來源] 視窗中使用滑鼠設定斷點時,調試程式會建立無法解析的斷點。