Použití zarážky v aplikaci Visual Studio ladicí program
- 06/30/2020
- 12 minut číst
-
- M
- g
- j
- v
- g
-
+8
Zarážky jsou jedním z nejdůležitějších ladění techniky v developer ‘ s toolbox. Můžete nastavit zarážky všude tam, kde chcete pozastavit provádění debugger. Například můžete chtít vidět stav kódových proměnných nebo se podívat na zásobník hovorů v určitém bodu zlomu. Pokud se pokoušíte vyřešit varování nebo problém při používání zarážek, podívejte se na odstraňování zarážek v debuggeru Visual Studio.
Poznámka
Pokud víte, že úkol nebo problém se snažíte vyřešit, ale musíte vědět, jaký druh zarážku použít, viz FAQ – Najděte své funkce ladění.
- nastavení zarážek ve zdrojovém kódu
- Přerušení akce a tracepoints
- podmínky zarážky
- Vytvořte podmíněný výraz
- použijte ID objektů v podmíněných výrazech (pouze C# A F#)
- Nastavit počet přístupů stav
- Nastavit filtr, stav
- nastavte zarážky funkce
- Nastavte funkci zarážky pomocí paměťové adresy (nativní C++)
- nastavit zarážky dat (. Net Core 3.0 nebo vyšší)
- Nastavit data zarážky (nativní C++)
- Spravovat zarážky Zarážky okno
- štítky zarážek
- Export a import zarážky
- nastavení zarážky z debugger Windows
- Nastavit zarážku v Zásobník Volání okno
- nastavte zarážku v okně demontáže
- Viz také
nastavení zarážek ve zdrojovém kódu
můžete nastavit zarážku na libovolném řádku spustitelného kódu. Například v následujícím kódu C# můžete nastavit zarážku na řádku kódu s přiřazením proměnné (int testInt = 1
), smyčkou for
nebo jakýmkoli kódem uvnitř smyčky for
. Nemůžete nastavit zarážku podpisů metod, deklarací pro jmenný prostor nebo třídu nebo deklarací proměnných, pokud neexistuje přiřazení a žádný getter/setter.
Chcete-li nastavit zarážku ve zdrojovém kódu, klikněte v levém okraji vedle řádku kódu. Můžete také vybrat řádek a stiskněte klávesu F9, vyberte Debug > Přepnout zarážku, nebo klepněte pravým tlačítkem myši a vyberte zarážku > vložit zarážku. Zarážka se zobrazí jako červená tečka na levém okraji.
pro většinu jazyků, včetně C#, jsou body přerušení a aktuální řádky provádění automaticky zvýrazněny. Pro kód C++ můžete zapnout zvýraznění bodu přerušení a aktuálních řádků výběrem nástroje (nebo ladění) > Možnosti > ladění > zvýraznění celého zdrojového řádku pro zarážky a aktuální příkaz (pouze C++).
při ladění se provádění pozastaví v zarážce, než se provede kód na tomto řádku. Symbol bodu zlomu zobrazuje žlutou šipku.
v bodě zlomu v následujícím příkladu je hodnota testInt
stále 1. Tak, hodnota se nezměnila od proměnná byla inicializována (nastavena na hodnotu 1), protože prohlášení v žluté nemá dosud proveden.
Když ladicí program se zastaví u zarážky, můžete se podívat na aktuální stav aplikace, včetně hodnoty proměnných a zásobník volání.
zde je několik obecných pokynů pro práci s zarážkami.
-
bod zlomu je přepínač. Můžete na něj kliknout, stisknout klávesu F9 nebo použít Debug > Přepnout zarážku k odstranění nebo opětovnému vložení.
-
Chcete-li zakázat zarážku bez odstranění, umístěte kurzor myši nebo klepněte pravým tlačítkem myši a vyberte Zakázat zarážku. Zakázané zarážky se zobrazují jako prázdné tečky v levém okraji nebo v okně zarážky. Chcete-li znovu povolit zarážku, umístěte kurzor myši na ni nebo klepněte pravým tlačítkem myši a vyberte Povolit zarážku.
-
Nastavit podmínky a akce, přidávat a upravovat popisky, nebo exportovat zarážky klepnutím pravým tlačítkem a výběrem příslušného příkazu, nebo vznášející se nad něj a výběrem ikonu Nastavení.
Přerušení akce a tracepoints
tracepoint je zarážka, která vytiskne zprávu Výstup okna. Tracepoint může fungovat jako dočasný příkaz trasování v programovacím jazyce a nepřerušuje provádění kódu. Tracepoint vytvoříte nastavením speciální akce v okně Nastavení bodu přerušení. Podrobné pokyny naleznete v části Použít tracepoints v debuggeru Visual Studio.
podmínky zarážky
můžete určit, kdy a kde se zarážka provádí nastavením podmínek. Podmínkou může být jakýkoli platný výraz, který debugger rozpozná. Další informace o platných výrazech naleznete v části výrazy v debuggeru.
nastavení podmínky zarážky:
-
klepněte pravým tlačítkem myši na symbol zarážky a vyberte podmínky (nebo stiskněte Alt + F9, C). Nebo umístěte kurzor myši na symbol zarážky, vyberte ikonu Nastavení a v okně Nastavení zarážky Vyberte podmínky.
můžete také nastavit podmínky v okně zarážky klepnutím pravým tlačítkem myši na zarážku a výběrem Nastavení a výběrem podmínek.
-
V rozbalovací nabídce, vyberte Podmíněný Výraz, Hit Počítat, nebo Filtr, a nastavit odpovídající hodnotu.
-
vyberte Zavřít nebo stisknutím kláves Ctrl+Enter zavřete okno Nastavení zarážky. Nebo v okně zarážky vyberte OK pro zavření dialogu.
zarážky s nastavenými podmínkami se zobrazují se symbolem + v oknech zdrojového kódu a zarážky.
Vytvořte podmíněný výraz
když vyberete podmíněný výraz, můžete si vybrat mezi dvěma podmínkami: je pravda nebo při změně. Volba je pravda, že se zlomí, když je výraz splněn, nebo když se změní na zlomení, když se změní hodnota výrazu.
v následujícím příkladu je bod zlomu zasažen pouze tehdy, když je hodnota testInt
4:
V následujícím příkladu, breakpoint je zasáhnout pouze tehdy, když hodnota testInt
změny:
Pokud nastavíte zarážku stavu s neplatnou syntaxi, zobrazí se upozornění. Pokud zadáte podmínku zarážky s platnou syntaxí, ale neplatnou sémantikou, zobrazí se varovná zpráva při prvním zasažení zarážky. V obou případech se debugger zlomí, když zasáhne neplatný bod přerušení. Bod zlomu je přeskočen pouze tehdy, je-li podmínka platná a vyhodnotí se na false
.
Poznámka
pro změněné pole debugger nepovažuje první vyhodnocení podmínky za změnu, takže nenarazí na bod zlomu při prvním vyhodnocení.
použijte ID objektů v podmíněných výrazech (pouze C# A F#)
jsou chvíle, kdy chcete sledovat chování konkrétního objektu. Můžete například zjistit, proč byl objekt vložen do kolekce více než jednou. V C # A F# můžete vytvořit ID objektů pro konkrétní instance referenčních typů a použít je v podmínkách zarážky. ID objektu je generováno debugovacími službami common language runtime (CLR) a přidruženo k objektu.
vytvoření ID objektu:
-
nastavte zarážku v kódu na nějakém místě po vytvoření objektu.
-
ladění Spustit a při spuštění zastaví u zarážky, zvolte Debug > Windows > Místní obyvatelé (nebo stiskněte kombinaci kláves Ctrl + Alt + V, L) otevřete okno Locals.
Najděte instanci konkrétního objektu v okně místní obyvatelé, klikněte na ni pravým tlačítkem a vyberte Vytvořit ID objektu.
měli byste vidět $ plus číslo v okně místních obyvatel. Toto je ID objektu.
-
přidejte nový bod zlomu v bodě, který chcete prozkoumat; například když má být objekt přidán do kolekce. Klepněte pravým tlačítkem myši na zarážku a vyberte podmínky.
-
použijte ID objektu v poli podmíněný výraz. Pokud je například proměnná
item
objekt, který má být přidán do kolekce, Vyberte je true a zadejte item = = $<n>, kde <n> je ID objektu.spuštění se přeruší v okamžiku, kdy má být tento objekt přidán do kolekce.
Chcete-li odstranit ID objektu, klepněte pravým tlačítkem myši na proměnnou v okně místní obyvatelé a vyberte Odstranit ID objektu.
Poznámka:
Id Objektu vytvořit slabé odkazy, a nebrání objekt od koše. Jsou platné pouze pro aktuální debugovací relaci.
Nastavit počet přístupů stav
Pokud máte podezření, že smyčky v kódu začíná zlobení po určitém počtu iterací, můžete nastavit zarážky k zastavení exekuce, po které se počet přístupů, spíše než byste museli opakovaně stiskněte klávesu F5 k dosažení této iterace.
v podmínkách v okně Nastavení bodu přerušení vyberte počet zásahů a poté zadejte počet iterací. V následujícím příkladu je zarážka nastavena tak, aby zasáhla každou další iteraci:
Nastavit filtr, stav
můžete omezit zarážku, aby oheň pouze na předepsaných zařízeních, nebo v určitých procesů a vláken.
v Podmínkách, Zarážky dialogové okno Nastavení, vyberte Filtr a potom zadejte jeden nebo více z následujících výrazů:
- Název_počítače = “jméno”
- ProcessId = hodnota
- ProcessName = “jméno”
- ThreadId = hodnota
- ThreadName = “jméno”
Uzavřete řetězec do uvozovek. Klauzule můžete kombinovat pomocí &
(a), ||
(nebo), !
(ne) a závorek.
nastavte zarážky funkce
při volání funkce můžete přerušit spuštění. To je užitečné například tehdy, když znáte název funkce, ale ne její umístění. Je také užitečné, pokud máte funkce se stejným názvem a chcete je všechny rozbít (například přetížené funkce nebo funkce v různých projektech).
nastavení bodu přerušení funkce:
-
vyberte Debug > nový bod přerušení > funkční bod přerušení nebo stiskněte Ctrl + K, B.
v okně zarážky můžete také vybrat novou funkci >.
-
v dialogovém okně Nový bod přerušení funkce zadejte název funkce do pole Název funkce.
pro zúžení specifikace Funkce:
-
použijte plně kvalifikovaný název funkce.
příklad:
Namespace1.ClassX.MethodA()
-
přidejte typy parametrů přetížené funkce.
příklad:
MethodA(int, string)
-
použijte ‘!’symbol pro zadání modulu.
příklad:
App1.dll!MethodA
-
použijte kontextový operátor v nativním c++.
{function, , }
Příklad:
{MethodA, , App1.dll}+2
-
-
V Jazyce rozevíracího seznamu vyberte jazyk funkce.
-
vyberte OK.
Nastavte funkci zarážky pomocí paměťové adresy (nativní C++)
můžete použít adresu objektu nastavit funkci zarážky na metodě zvané konkrétní instance třídy. Například vzhledem k adresovatelnému objektu typu my_class
můžete nastavit bod přerušení funkce na metodě my_method
, kterou instance volá.
-
nastavte zarážku někde po instanci třídy je instance.
-
najděte adresu instance (například
0xcccccccc
). -
Zvolte Debug > Nové Zarážky > Funkce Zarážku, nebo stiskněte Ctrl + K a, B.
-
Přidat následující Funkce Název pole, a vyberte jazyk C++.
((my_class *) 0xcccccccc)->my_method
nastavit zarážky dat (. Net Core 3.0 nebo vyšší)
data breakpoints přeruší provedení, když se změní vlastnost konkrétního objektu.
nastavení bodu přerušení dat
-
v projektu.Net Core spusťte ladění a počkejte, až bude dosaženo bodu zlomu.
-
v okně Autos, Watch nebo Locals klepněte pravým tlačítkem myši na vlastnost a v místní nabídce vyberte možnost Break, když se hodnota změní.
data breakpoints V. Net Core nebude fungovat pro:
- Vlastnosti, které nejsou rozšiřitelné v popisku, Místní obyvatelé, Auta, nebo Sledovat okno
- Statické proměnné
- Třídy s DebuggerTypeProxy Atribut
- Pole uvnitř struktury
Nastavit data zarážky (nativní C++)
Data zarážky zlomit provedení, kdy hodnota uložená v paměti určené změny adresy. Pokud je hodnota přečtena, ale nezměněna, provedení se nezlomí.
nastavení bodu přerušení dat:
-
v projektu C++ spusťte ladění a počkejte, až bude dosaženo bodu zlomu. V nabídce ladění zvolte nový bod přerušení > bod přerušení dat.
můžete také vybrat nový > bod přerušení dat v okně zarážky nebo klepněte pravým tlačítkem myši na položku v okně Autos, Watch nebo Locals a v kontextové nabídce vyberte možnost Break při změně hodnoty.
-
Do pole Adresa zadejte adresu paměti, nebo výraz, který se vyhodnotí na adresu paměti. Například zadejte
&avar
pro přerušení, když se změní obsah proměnnéavar
. -
v rozbalovací nabídce počet bajtů vyberte počet bajtů, které má ladicí program sledovat. Pokud například vyberete 4, debugger bude sledovat čtyři bajty začínající na
&avar
a pokud některý z těchto bajtů změní hodnotu, zlomí se.
Údaje zarážky nefunguje za následujících podmínek:
- proces, který není laděn zapisuje do umístění v paměti.
- umístění paměti je sdíleno mezi dvěma nebo více procesy.
- umístění paměti je aktualizováno v jádře. Pokud je například paměť předána 32bitové funkci Windows
ReadFile
, paměť bude aktualizována z režimu jádra, takže debugger se při aktualizaci nezlomí. - kde je výraz hodinek větší než 4 bajty na 32bitovém hardwaru a 8 bajtů na 64bitovém hardwaru. Toto je omezení architektury x86.
Poznámka
-
zarážky dat závisí na konkrétních adresách paměti. Adresa proměnné se mění z jedné ladicí relace na další, takže body přerušení dat jsou automaticky deaktivovány na konci každé ladicí relace.
-
Pokud nastavíte data breakpoint na lokální proměnné, přerušení zůstává aktivní, když funkce skončí, ale adresa paměti je již platná, tak chování zarážky je nepředvídatelné. Pokud nastavíte zarážku dat v místní proměnné, měli byste odstranit nebo zakázat zarážku před ukončením funkce.
Spravovat zarážky Zarážky okno
můžete použít body přerušení okno vidět a spravovat všechny zarážky ve vašem řešení. Toto centralizované umístění je zvláště užitečné ve velkém řešení nebo pro složité scénáře ladění, kde jsou kritické zarážky.
v okně zarážky můžete vyhledávat, třídit, filtrovat, povolit/zakázat nebo odstranit zarážky. Můžete také nastavit podmínky a akce nebo přidat novou funkci nebo bod přerušení dat.
otevřete Zarážky okna, vyberte možnost Ladění > Windows > Zarážky, nebo stiskněte kombinaci kláves Ctrl+Alt+B.
vybrat sloupce, které chcete zobrazit v body přerušení okno, vyberte možnost Zobrazit Sloupce. Vyberte záhlaví sloupce a seřaďte seznam zarážek podle tohoto sloupce.
štítky zarážek
pomocí štítků můžete třídit a filtrovat seznam zarážek v okně zarážky.
- Chcete-li přidat štítek do bodu přerušení, klepněte pravým tlačítkem myši na bod přerušení ve zdrojovém kódu nebo v okně zarážky a poté vyberte Upravit štítky. Přidejte nový štítek nebo vyberte existující a poté vyberte OK.
- seřadit seznam zarážek v okně zarážky výběrem štítků, podmínek nebo jiných záhlaví sloupců. Sloupce, které chcete zobrazit, můžete vybrat výběrem Zobrazit sloupce na panelu nástrojů.
Export a import zarážky
uložit nebo sdílet stav a umístění zarážky, můžete exportovat nebo importovat.
- exportovat jednu zarážku do souboru XML, klepněte pravým tlačítkem myši na zarážky ve zdrojovém kódu nebo Zarážky okna, a vyberte možnost Exportovat nebo Exportovat vybrané. Vyberte umístění exportu a poté vyberte Uložit. Výchozí umístění je složka řešení.
- Chcete-li exportovat několik zarážek, vyberte v okně zarážky políčka vedle zarážek nebo do vyhledávacího pole zadejte kritéria vyhledávání. Vyberte Exportovat všechny zarážky odpovídající aktuální ikoně kritérií vyhledávání a uložte soubor.
- Chcete-li exportovat všechny zarážky, zrušte výběr všech políček a ponechte vyhledávací pole prázdné. Vyberte Exportovat všechny zarážky odpovídající aktuální ikoně kritérií vyhledávání a uložte soubor.
- Chcete-li importovat zarážky, v okně zarážky vyberte Import zarážky z ikony souboru, přejděte do umístění souboru XML a vyberte Otevřít.
nastavení zarážky z debugger Windows
můžete také nastavit zarážky z Call Stack a demontáž debugger windows.
Nastavit zarážku v Zásobník Volání okno
break v příkazu, nebo řádek, který je volání funkce vrátí, můžete nastavit zarážku v Zásobník Volání okno.
nastavení zarážky v okně zásobníku hovorů:
-
Chcete-li otevřít okno zásobníku hovorů, musíte být během ladění pozastaveni. Zvolte Debug > Windows > Zásobník Volání, nebo stiskněte kombinaci kláves Ctrl+Alt+C.
-
V Zásobník Volání okno, klepněte pravým tlačítkem myši na volání funkce a vyberte Zarážku > Vložit Zarážku, nebo stiskněte F9.
vedle názvu volání funkce v levém okraji zásobníku volání se objeví symbol zarážky.
zarážka zásobníku volání se zobrazí v okně zarážky jako Adresa s umístěním paměti, které odpovídá další spustitelné instrukci ve funkci.
debugger se při instrukci přeruší.
další informace o zásobníku hovorů naleznete v části Jak: použijte okno zásobníku hovorů.
Chcete-li vizuálně sledovat zarážky během provádění kódu, viz mapové metody na zásobníku hovorů při ladění.
nastavte zarážku v okně demontáže
-
Chcete-li otevřít okno demontáže, musíte být během ladění pozastaveni. Vyberte Debug > Windows > demontáž nebo stiskněte Ctrl + Alt+D.
-
v okně demontáže klikněte na levý okraj instrukce, kterou chcete přerušit. Můžete také vybrat a stiskněte klávesu F9, nebo klepněte pravým tlačítkem myši a vyberte zarážku > vložit zarážku.
Viz také
- co je ladění?
- Napište lepší C # kód pomocí Visual Studio
- první pohled na ladění
- odstraňování poruch v debuggeru Visual Studio