斷點語法
建立 斷點時,可以透過調試程式命令視窗或 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評估工具中的符號名稱中使用空格、角括號 (<、 >) 或其他特殊字元。 此語法專屬於名稱,而非參數。 範本和多載是需要此引號表示法之符號的主要來源。 您也可以使用 @!“ 來設定 bu 命令chars“ 語法,如下列程式代碼範例所示。
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 中使用大量多載,所以這個語法對許多 Managed 程式代碼而言也很重要。
若要在 C++ 語法中的任意文字上設定斷點,請使用 bu @@c++ (C++相容符號的文字 ) 。
腳本中的斷點
斷點標識碼不需要明確參考。 相反地,您可以使用解析為對應至斷點標識碼的整數的數值表達式。 若要指出表達式應該解譯為斷點,請使用下列語法。
b?[Expression]
在此語法中,方括弧是必要的, 而Expression 代表解析為對應至斷點標識碼之整數的任何數值表達式。
此語法可讓調試程式腳本以程式設計方式選取斷點。 在下列範例中,斷點會根據使用者定義虛擬緩存器的值而變更。
b?[@$t0]
斷點虛擬緩存器
如果您想要在表達式中參考斷點位址,您可以使用 虛擬緩存器 搭配 $bpNumber 語法,其中 Number 是斷點標識碼。 如需此語法的詳細資訊,請參閱 Pseudo-Register 語法。
模棱兩可的斷點解析
在調試程式引擎的 10.0.25310.1001 版和更新版本中,現在支援模棱兩可的斷點解析。 模棱兩可的斷點可讓調試程式在斷點表達式解析為多個位置的特定案例中設定斷點。 如需詳細資訊,請參閱 模棱兩可的斷點解析。