Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Následující prvky syntaxe lze použít při vytváření breakpointu, a to buď prostřednictvím okna příkazů pro ladění, nebo prostřednictvím grafického rozhraní WinDbg.
Adresy v bodech přerušení
Zarážky podporují mnoho druhů syntaxe adres, včetně virtuálních adres, posunů funkcí a zdrojových řádků. K nastavení zarážek můžete použít například některý z následujících příkazů:
0:000> bp 0040108c
0:000> bp main+5c
0:000> bp `source.c:31`
Další informace o této syntaxi naleznete v tématu Syntaxe číselného výrazu, Syntaxe řádku zdroje a jednotlivá témata příkazů.
Zarážky u metod
Pokud chcete vložit zarážku do Metody MyMethod třídy MyClass , můžete použít dvě různé syntaxe:
V syntaxi výrazu MASM můžete metodu označit dvojitou dvojtečku nebo dvojitým podtržítkem.
0:000> bp MyClass::MyMethod 0:000> bp MyClass__MyMethodV syntaxi výrazu jazyka C++ je nutné označit metodu dvojitou dvojtečku.
0:000> bp @@( MyClass::MyMethod )
Pokud chcete použít složitější příkaz zarážky, měli byste použít syntaxi výrazu MASM. Další informace o syntaxi výrazů naleznete v tématu Vyhodnocení výrazů.
Body přerušení používající složité výrazy MASM
Pokud chcete nastavit zarážku u složitých funkcí, včetně funkcí obsahujících mezery a člena veřejné třídy jazyka C++, uzavřete výraz do závorek. Například použijte bp (?? MyPublic) nebo bp (operátor new).
Všestrannější technikou je použít syntaxi @!„chars“. Toto je speciální escape sekvence ve vyhodnocovači MASM, která umožňuje zadat libovolný text pro rozlišení symbolů. Musí začínat třemi symboly @!" a končit uvozovkami ("). Bez této syntaxe nelze použít mezery, úhlové závorky (<, >) ani jiné speciální znaky v názvech symbolů v vyhodnocovače MASM. Tato syntaxe se používá výhradně pro názvy, nikoli parametry. Šablony a přetížení jsou primárními zdroji symbolů, které vyžadují tento zápis uvozovek. Příkaz bu můžete nastavit také pomocí @!" syntaxe chars", jak ukazuje následující příklad kódu.
0:000> bu @!"ExecutableName!std::pair<unsigned int,std::basic_string<unsigned short,std::char_traits<unsigned short>,std::allocator<unsigned short> > >::operator="
V tomto příkladu je Název spustitelného souboru.
Tato řídicí syntaxe je užitečnější pro jazyk C++ (například přetížené operátory) místo jazyka C, protože v názvech funkcí jazyka C nejsou žádné mezery (ani speciální znaky). Tato syntaxe je však také důležitá pro velké množství spravovaného kódu kvůli značnému použití přetížení v rozhraní .NET Framework.
Pokud chcete nastavit zarážku u libovolného textu v syntaxi jazyka C++, použijte bu @@c++(text) pro symboly kompatibilní s jazykem C++.
Zarážky ve skriptech
ID zarážek se nemusí explicitně odkazovat. Místo toho můžete použít číselný výraz, který se vyhodnotí na celé číslo odpovídající číslu ID zarážky. Pokud chcete označit, že výraz by se měl interpretovat jako zarážka, použijte následující syntaxi.
b?[Expression]
V této syntaxi se vyžadují hranaté závorky a výraz představuje jakýkoli číselný výraz, který se vyhodnotí na celé číslo odpovídající ID breakpointu.
Tato syntaxe umožňuje skriptům ladicího programu programově vybrat bod přerušení. V následujícím příkladu se zarážka mění v závislosti na hodnotě uživatelem definovaného pseudoregistru.
b?[@$t0]
Pseudo-registry přerušovacích bodů
Pokud chcete odkazovat na adresu zarážky ve výrazu, můžete použít pseudoregistr se syntaxí $bpČíslo , kde Number je ID zarážky. Další informace o této syntaxi najdete v tématu Pseudo-Register Syntaxe.
Nejednoznačné rozlišení bodu přerušení
Ve verzi 10.0.25310.1001 a novějších ladicího modulu je nyní podporováno řešení nejednoznačných zarážek. Nejednoznačné zarážky umožňují ladicímu programu nastavit zarážky v určitých scénářích, kdy se výraz zarážky vyřeší na více míst. Další informace najdete v tématu Nejednoznačné rozlišení zarážky.