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.
Symboly umožňují přímo manipulovat s tokeny, které používá laděný program. Můžete například nastavit zarážku na hlavní funkci pomocí příkazu bp main nebo zobrazit celočíselnou proměnnou MyInt pomocí příkazu dd MyInt L1.
V mnoha případech je možné symboly použít jako parametry v příkazech ladicího programu. To je podporováno u většiny číselných parametrů a je také podporováno v některých textových parametrech. Kromě obecných pravidel pro syntaxi symbolů existují také pravidla syntaxe symbolů, která platí v každém z těchto případů.
Obecná pravidla syntaxe symbolů
Název symbolu se skládá z jednoho nebo více znaků, ale vždy začíná písmenem, podtržítkem (_), otazníkem (?) nebo znakem dolaru ($).
Název symbolu může být kvalifikovaný názvem modulu. Vykřičník (!) odděluje název modulu od symbolu (například mymodule!main). Pokud se nepoužívá žádný název modulu, symbol může být stále opatřen vykřičníkem na začátku. Použití vykřičníku bez názvu modulu může být zvlášť užitečné, i u místních proměnných, k označení příkazu ladicího programu, že parametr je název a nikoli šestnáctkové číslo. Například proměnná fade bude přečtena příkazem dt (Typ zobrazení) jako adresa, pokud není opatřena předponou vykřičníkem nebo je použita možnost -n. Chcete-li však určit, že symbol je místní, před ním znak dolaru ( $ ) a vykřičník ( ! ), jako v $!lime.
Názvy symbolů jsou zcela nezávislé na velikosti písmen. To znamená, že přítomnost myInt a MyInt ve vašem programu nebude správně pochopena ladicími programy; každý příkaz, který odkazuje na jednu z těchto proměnných, může přistupovat k té druhé, bez ohledu na to, jak je příkaz kapitalizován.
Syntaxe symbolů v numerických výrazech
Ladicí program rozumí dvěma různým druhům výrazů: výrazy Microsoft Macro Assembler (MASM) a výrazy jazyka C++. Pokud jde o symboly, tyto dvě formy syntaxe se liší následujícím způsobem:
Ve výrazech MASM se každý symbol interpretuje jako adresa. V závislosti na tom, co symbol odkazuje, bude to adresa globální proměnné, místní proměnné, funkce, segmentu, modulu nebo jakéhokoli jiného rozpoznaného popisku.
Ve výrazech jazyka C++ se každý symbol interpretuje podle jeho typu. V závislosti na tom, co symbol odkazuje, může být interpretován jako celé číslo, datová struktura, ukazatel funkce nebo jakýkoli jiný datový typ. Výsledkem symbolu, který neodpovídá datovému typu C++ (například názvu nemodifikovaného modulu), bude chyba syntaxe.
Vysvětlení, kdy a jak používat jednotlivé typy syntaxe, najdete v tématu Vyhodnocení výrazů.
Pokud používáte syntaxi výrazu MASM, měl by být libovolný symbol, který by se dal interpretovat jako šestnáctkové číslo nebo jako registr (např. BadFeed, ebX), mít vždy předponu vykřičník. Tím je zajištěno, že ladicí program jej rozpozná jako symbol.
K nastavení přípony symbolu lze použít příkaz ss (Nastavit příponu symbolu). Ladicí program se nastaví tak, aby automaticky připojil "A" nebo "W" k libovolnému názvu symbolu, který nemůže jinak najít.
Mnoho rutin Win32 existuje ve verzích ASCII i Unicode. Tyto rutiny často mají na konci svých názvů připojeno "A" nebo "W". Použití přípony symbolů pomůže ladicímu programu při vyhledávání těchto symbolů.
Porovnávání přípon není ve výchozím nastavení aktivní.
Syntaxe symbolů v textových výrazech
Symboly se dají použít v textových parametrech některých příkazů – například bm (Set Breakpoint) a x (Prozkoumat symboly).
Tyto textové parametry podporují celou řadu zástupných znaků a specifikátorů. Podrobnosti najdete v tématu Syntaxe zástupných znaků řetězce . Kromě standardních zástupných znaků řetězce může být textový výraz použitý k zadání symbolu opatřen úvodním podtržítkem. Při porovnávání se symbolem bude ladicí program považovat toto za libovolný počet podtržítek, včetně nuly.
Přípona symbolu se nepoužívá při porovnávání symbolů v textových výrazech.