建立 斷點時,可以透過 [調試程式命令] 視窗或 WinDbg 圖形化介面,使用下列語法元素。
斷點中的位址
斷點支援多種位址語法,包括虛擬位址、函式位移和原始碼行號。 例如,您可以使用下列任何命令來設定斷點:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
如需此語法的詳細資訊,請參閱 數值表達式語法、 源行語法和個別命令主題。
方法上的斷點
如果您想要在 MyClass 類別的 MyMethod 方法上放置斷點,您可以使用兩種不同的語法:
在MASM表達式語法中,您可以透過雙冒號或雙底線來指示方法。
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethod在C++表達式語法中,您必須以雙冒號表示方法。
0:000> bp @@( MyClass::MyMethod )
如果您想要使用更複雜的斷點命令,您應該使用MASM表達式語法。 如需表達式語法的詳細資訊,請參閱 評估表達式。
使用複雜MASM表達式的斷點
若要在複雜的函式上設定斷點,包括包含空格的函式,以及C++公用類別的成員,請將表達式括在括弧中。 例如,使用 bp (??MyPublic) 或 bp (運算子 new) 。
更靈活的技巧是使用 @!"chars" 語法。 這是MASM評估工具中的特殊逸出,可讓您提供任意文字進行符號解析。 您必須以 @!“ 的三個符號開頭,並以引號結尾()。 如果沒有此語法,您就無法在MASM評估工具中的符號名稱中使用空格、角括號 (<、 >、 ) 或其他特殊字元。 此語法僅針對名稱而非參數。 範本和多載是需要這個引號表示法之符號的主要來源。 您也可以使用 @!"chars" 語法來設定 bu 命令,如下列程式碼範例所示。
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
在此範例中, ExecutableName 是可執行檔的名稱。
由於 C 函式名稱中沒有空格(或特殊字元),因此這個逸出語法更適用於C++(例如多載運算元),而不是 C。 不過,由於在 .NET Framework 中大量使用多載,此語法對於許多受控代碼來說也很重要。
若要在C++語法中設定任意文字的斷點,請使用 bu@@c++(text) 作為C++相容符號。
腳本中的斷點
斷點識別碼不需要明確指定。 相反地,您可以使用數值表達式,該表達式可解析為與斷點 ID 對應的整數。 若要指出表達式應該解譯為斷點,請使用下列語法。
b?[Expression]
在此語法中,需要方括弧, 而Expression 代表任何解析為對應至斷點標識碼之整數的數值表達式。
此語法可讓調試程式腳本以程式設計方式選取斷點。 在下列範例中,斷點會根據使用者定義虛擬緩存器的值而變更。
b?[@$t0]
斷點偽暫存器
如果您想要在表達式中參考斷點位址,您可以使用 虛擬緩存器 搭配 $bpNumber 語法,其中 Number 是斷點標識碼。 如需此語法的詳細資訊,請參閱 Pseudo-Register 語法。
模棱兩可的斷點解析
在調試程式引擎的 10.0.25310.1001 版和更新版本中,現在支援模棱兩可的斷點解析。 模棱兩可的斷點可讓調試程式在特定斷點表達式解析為多個位置的案例中設定斷點。 如需詳細資訊,請參閱 不明确的斷點解析。