Sdílet prostřednictvím


Řízení příznaků a parametrů bodů přerušení

Existuje řada metod, které lze použít k určení základních informací o bodech zlomu.

  • GetId vrací ID zarážky.

  • GetType vrátí typ zarážky (software nebo procesor) a typ efektivního procesoru, na kterém je zarážka nastavena.

  • GetAdder vrátí klienta, který přidal zarážku.

  • GetOffset vrátí adresu bodu přerušení.

  • GetOffsetExpression vrátí řetězec výrazu, který určuje umístění zarážky.

Kromě jeho umístění a typu zarážky má zarážka několik parametrů, které řídí jeho chování.

Parametry bodů přerušení lze řídit různými metodami. Kromě toho se většina parametrů může dotazovat společně pomocí GetParameters.

Příznaky zarážky

Příznaky zarážek jsou jedním druhem parametrů zarážek.

Příznaky zarážek lze dotazovat pomocí GetFlags. Lze je změnit pomocí AddFlags, RemoveFlagsnebo SetFlags.

Příznaky zarážek tvoří bitové pole. Možné příznaky, které lze použít v tomto bitovém poli a jejich významy, jsou následující:

DEBUG_BREAKPOINT_ENABLED
Pokud je tento příznak nastavený, zarážka je povolena a bude mít normální účinek. Pokud tento příznak není nastavený, zarážka se zakázaná a nebude mít žádný vliv. Pokud chcete dočasně deaktivovat zarážku, můžete tento příznak odebrat; tento příznak pak můžete snadno přidat zpět, když chcete tuto zarážku znovu aktivovat.

DEBUG_BREAKPOINT_ADDER_ONLY
Když je tento příznak nastaven, zarážka je soukromá zarážka. Tato zarážka se zobrazí jenom klientovi, který ji přidal. V takovém případě ostatní klienti nebudou moct dotazovat stroj na zarážku a stroj neodešle události generované zarážkou jiným klientům. Všechna zpětná volání (událost a výstup) související s touto zarážkou budou odeslána pouze tomuto klientovi. Viz GetAdder.

DEBUG_BREAKPOINT_GO_ONLY
Pokud je tento příznak nastavený, přerušovací bod se aktivuje pouze v případě, že cíl běží v neomezeném režimu. Pokud procesor krokově prochází pokyny v cíli, neaktivuje se.

DEBUG_BREAKPOINT_ONE_SHOT
Při nastavení tohoto příznaku se zarážka automaticky odebere při prvním spuštění.

DEBUG_BREAKPOINT_ODLOŽENO
Když je tento příznak nastaven, je zarážka odložená. Tento příznak je nastaven modulem, když je posun zarážky zadán pomocí symbolického výrazu a modul nemůže výraz vyhodnotit. Při každém načtení nebo zrušení načtení modulu v cíli se modul pokusí výraz znovu vyhodnotit pro všechny zarážky, jejichž umístění je zadáno pomocí výrazu. Ty, které nelze vyhodnotit, jsou označeny jako odložené. Tento příznak nemůže změnit žádný klient.

další parametry zlomů

Parametry zarážky také zahrnují:

počet průchodů
Pokud má zarážka přidružený počet průchodů, nebude aktivována, dokud cíl neprojde zarážkou požadovaný početkrát. Počet průchodů, který byl původně nastaven, lze najít pomocí příkazu GetPassCount. Počet zbývajících, kolikrát modul projde přerušovacím bodem před aktivací, lze najít pomocí GetCurrentPassCount. Počet průchodů lze vynulovat na novou hodnotu pomocí SetPassCount.

vlákno
Pokud má zarážka přidružené vlákno, systém ji bude ignorovat, když narazí na jakékoli jiné vlákno. Vlákno lze nalézt pomocí GetMatchThreadIda může být změněno pomocí SetMatchThreadId.

příkaz
Bod přerušení může mít přidružený příkaz. Příkaz se spustí při aktivaci bodu zlomu. Tento příkaz lze najít pomocí GetCommanda lze jej změnit pomocí SetCommand.

velikosti
Pokud je bod přerušení bodem přerušení procesoru, musí mít zadanou velikost. Určuje velikost bloku paměti, jehož přístup aktivuje zarážku – začátek bloku je umístění zarážky. Velikost lze najít pomocí GetDataParametersa lze ji změnit pomocí SetDataParameters.

Typ přístupu
Pokud je zarážka zarážkou procesoru, musí mít typ přístupu. Určuje typ přístupu, který aktivuje bod přerušení. Zarážka se může aktivovat například v případě, že cíl čte z paměti, zapisuje do ní nebo ji spouští, jak je určeno zarážkou. Typ přístupu lze najít pomocí GetDataParametersa lze ho změnit pomocí SetDataParameters.

platné parametry pro přerušení procesoru

Pro zarážky procesoru jsou k dispozici následující typy přístupu:

Hodnota Popis

DEBUG_BREAK_READ

Zarážka se aktivuje, když procesor načte paměť v bloku paměti zarážky.

DEBUG_PŘERUŠIT_ZÁPIS

Bod přerušení se aktivuje, když procesor zapíše data do paměťového bloku bodu přerušení.

DEBUG_BREAK_READ | DEBUG_BREAK_WRITE

Zarážka se aktivuje, když procesor přečte nebo zapíše paměť do bloku paměti zarážky.

DEBUG_BREAK_EXECUTE

Zarážka bude aktivována, když procesor načte instrukci v paměťovém bloku zarážky.

DEBUG_BREAK_IO

Zarážka se aktivuje při přístupu k V/V portu v bloku paměti zarážek. (pouze Windows XP a Microsoft Windows Server 2003, pouze režim jádra, pouze x86)

Ve všech procesorech nejsou podporované všechny typy a velikosti přístupu. Podporují se následující typy a velikosti přístupu:

x86
Podporují se všechny typy přístupu. DEBUG_BREAK_READ se chová jako DEBUG_BREAK_READ | DEBUG_BREAK_WRITE. Velikost musí být 1, 2 nebo 4. Adresa zarážky musí být násobkem velikosti.

x64
Podporují se všechny typy přístupu. DEBUG_BREAK_READ se chová jako DEBUG_BREAK_READ | DEBUG_BREAK_WRITE. Velikost musí být 1, 2, 4 nebo 8. Adresa zarážky musí být násobkem velikosti.