Sdílet prostřednictvím


Protokolování informací do okna Výstup pomocí trasovacích bodů v sadě Visual Studio

Trasovací body umožňují protokolovat informace do okna Výstup za konfigurovatelných podmínek beze změny nebo zastavení kódu. Tato funkce je podporovaná pro spravované jazyky (C#, Visual Basic, F#) a nativní kód i jazyky, jako je JavaScript a Python.

Poznámka:

Informace o protokolování informací do okna Výstup prostřednictvím kódu programu pomocí rozhraní .NET API naleznete v tématu Odesílání zpráv do okna Výstup.

Podívejme se na příklad

Následující ukázkový program je jednoduchá for smyčka s proměnnou čítače, která se zvyšuje o jednu při každém spuštění smyčky další iterace.

Snímek obrazovky s ukázkovým programem čítače

Následující ukázkový program je jednoduchá for smyčka s proměnnou čítače, která se zvyšuje o jednu při každém spuštění smyčky další iterace.


using System.Diagnostics;

namespace Tracepoints
{
    public class Program
    {
        public static void Main(string[] args)
        {
            int counter = 0;
            for (int i=0; i<=10; i++)
            {
                counter +=1;
            }
        }
    }
}

Nastavení trasovacích bodů ve zdrojovém kódu

Trasovací body můžete nastavit zadáním výstupního řetězce pod zaškrtávacím políčka Akce v okně Nastavení zarážky .

  1. Chcete-li inicializovat trasovací bod, klikněte nejprve na hřbet vlevo od čísla řádku, kde chcete nastavit tracepoint.

    Snímek obrazovky znázorňující inicializaci zarážky v ukázkovém kódu

  2. Najeďte myší na červené kolečko a potom klikněte na ikonu ozubeného kola.

  3. Tato akce otevře okno Nastavení zarážky .

    Snímek obrazovky znázorňující okno zarážky

  4. Zaškrtněte políčko Akce .

    Snímek obrazovky okna zarážky se zaškrtnutým políčku Akce

    Všimněte si, že se červené kolečko změní na kosočtverec, který označuje, že jste přepnuli ze zarážky na tracepoint.

  5. Zadejte zprávu, kterou chcete přihlásit do textového pole Zobrazit zprávu v textovém poli Okno výstupu (podrobnosti najdete v dalších částech tohoto článku).

    Váš tracepoint je teď nastavený. Pokud chcete vše udělat, stiskněte tlačítko Zavřít, pokud do okna výstupu zapíšete nějaké informace.

  6. Pokud chcete přidat podmínky, které určují, jestli se zpráva zobrazí, zaškrtněte políčko Podmínky .

    Snímek obrazovky okna zarážky se zaškrtnutým políčku Podmínky

    Pro podmínky máte tři možnosti: podmíněný výraz, filtr a počet přístupů.

Trasovací body můžete nastavit zadáním výstupního řetězce pod zaškrtávacím políčka Akce v okně Nastavení zarážky .

  1. Chcete-li inicializovat trasovací bod, klikněte nejprve na hřbet vlevo od čísla řádku, kde chcete nastavit tracepoint.

    Snímek obrazovky znázorňující inicializaci zarážky v ukázkovém kódu

  2. Najeďte myší na červené kolečko a kliknutím na ikonu ozubeného kola otevřete okno Nastavení zarážky .

    Snímek obrazovky znázorňující okno zarážky

  3. Zaškrtněte políčko Akce .

    Snímek obrazovky okna zarážky se zaškrtnutým políčku Akce

    Všimněte si, že se červené kolečko změní na kosočtverec, který označuje, že jste přepnuli ze zarážky na tracepoint.

  4. Zadejte zprávu, kterou chcete přihlásit do textového pole Zobrazit zprávu v textovém poli Okno výstupu (podrobnosti najdete v dalších částech tohoto článku).

    Váš tracepoint je teď nastavený. Pokud chcete vše udělat, stiskněte tlačítko Zavřít, pokud do okna výstupu zapíšete nějaké informace.

  5. Pokud chcete přidat podmínky, které určují, jestli se zpráva zobrazí, zaškrtněte políčko Podmínky .

    Snímek obrazovky okna zarážky se zaškrtnutým políčku Podmínky

    Pro podmínky máte tři možnosti: podmíněný výraz, filtr a počet přístupů.

Nabídka Akce

Tato nabídka umožňuje protokolovat zprávu do okna Výstup. Do pole se zprávou zadejte řetězce, které chcete vypsat (žádné uvozovky nejsou nutné). Pokud chcete zobrazit hodnoty proměnných, ujistěte se, že je uzavřete do složených závorek.

Pokud například chcete zobrazit hodnotu proměnné ve výstupní konzole, zadejte do textového counter pole zprávy {counter}.

Snímek obrazovky zobrazující zprávu výstupu čítače

Pokud kliknete na Tlačítko Zavřít a potom ladit program (F5), zobrazí se v okně Výstup následující výstup.

Snímek obrazovky s oknem Zprávy akcí ve výstupu

K zobrazení konkrétnějších informací můžete použít také speciální klíčová slova. Zadejte klíčové slovo přesně tak, jak je znázorněno níže (před každým klíčovým slovem použijte "$" a všechny caps pro samotné klíčové slovo).

Keyword Co se zobrazí
$ADDRESS Aktuální instrukce
$CALLER Název volající funkce
$CALLSTACK Zásobník volání
$FUNCTION Název aktuální funkce
$PID ID procesu
$PNAME Název procesu
$TID ID vlákna
$TNAME Název vlákna
$TICK Počet záčtů (z Windows GetTickCount)

Tato nabídka umožňuje protokolovat zprávu do okna Výstup. Do pole se zprávou zadejte řetězce, které chcete vypsat (žádné uvozovky nejsou nutné). Pokud chcete zobrazit hodnoty proměnných, ujistěte se, že je uzavřete do složených závorek.

Pokud například chcete zobrazit hodnotu proměnné ve výstupní konzole, zadejte {counter} do textového counter pole zprávy.

Snímek obrazovky zobrazující zprávu výstupu čítače

Pokud kliknete na Tlačítko Zavřít a potom ladit program (F5), zobrazí se v okně Výstup následující výstup.

Snímek obrazovky s oknem Zprávy akcí ve výstupu

K zobrazení konkrétnějších informací můžete použít také speciální klíčová slova. Zadejte klíčové slovo přesně tak, jak je znázorněno níže (před každým klíčovým slovem použijte "$" a všechny caps pro samotné klíčové slovo).

Keyword Co se zobrazí
$ADDRESS Aktuální instrukce
$CALLER Název volající funkce
$CALLSTACK Zásobník volání
$FUNCTION Název aktuální funkce
$PID ID procesu
$PNAME Název procesu
$TID ID vlákna
$TNAME Název vlákna
$TICK Počet záčtů (z Windows GetTickCount)

Nabídka Podmínky

Podmínky umožňují filtrovat výstupní zprávy, takže se zobrazují jenom v určitých scénářích. K dispozici jsou tři hlavní druhy podmínek.

Podmíněný výraz

U podmíněného výrazu se výstupní zpráva zobrazí jenom v případě, že jsou splněny určité podmínky.

U podmíněných výrazů můžete nastavit trasovací bod tak, aby vystavoval zprávu, pokud je určitá podmínka pravdivá nebo když se změnila. Pokud například chcete zobrazit pouze hodnotu čítače během sudých iterací smyčky for , můžete vybrat možnost Je pravda a pak zadat i%2 == 0 do textového pole zprávy.

Snímek obrazovky s podmíněným výrazem je true

Pokud chcete vytisknout hodnotu čítače při změně iterace for smyčky, vyberte možnost Při změně a zadejte i do textového pole zprávy.

Snímek obrazovky znázorňující, kdy je podmíněný výraz změněn

Chování možnosti Při změně se u různých programovacích jazyků liší.

  • V případě nativního kódu ladicí program nepovažuje první vyhodnocení podmínky za změnu, takže nenarazí na trasovací bod při prvním vyhodnocení.
  • U spravovaného kódu ladicí program po výběru změny přejde na trasovací bod při prvním vyhodnocení.

Podmínku můžete nastavit také v případě, že lze trasovací bod povolit vložením zarážky do libovolného konkrétního oddílu kódu a zaškrtnutím políčka Povolit pouze při dosažení následující zarážky: možnost v nabídce Nastavení zarážky . V seznamu voleb můžete zvolit libovolnou zarážku.

Snímek obrazovky znázorňující povolení při zaškrtnutí zarážky

Podrobnější přehled platných výrazů, které můžete použít při nastavování podmínek, najdete v tématu Výrazy v ladicím programu.

Získání pomoci s AI

Pokud máte Copilot, můžete získat pomoc s AI při vytváření tracepointu. Copilot nabízí návrhy pro podmíněné zarážky a trasovací body , které jsou specifické pro váš kód.

Snímek obrazovky s příkazem Copilot, který pracuje s návrhy podmíněné zarážky

Další informace naleznete v tématu Ladění pomocí Copilotu.

U podmíněného výrazu se výstupní zpráva zobrazí jenom v případě, že jsou splněny určité podmínky.

U podmíněných výrazů můžete nastavit trasovací bod tak, aby vystavoval zprávu, pokud je určitá podmínka pravdivá nebo když se změnila. Pokud například chcete zobrazit pouze hodnotu čítače během sudých iterací smyčky for , můžete vybrat možnost Je pravda a pak zadat i%2 == 0 do textového pole zprávy.

Snímek obrazovky s podmíněným výrazem je true

Pokud chcete vytisknout hodnotu čítače při změně iterace for smyčky, vyberte možnost Při změně a zadejte i do textového pole zprávy.

Snímek obrazovky znázorňující, kdy je podmíněný výraz změněn

Chování možnosti Při změně se u různých programovacích jazyků liší.

  • V případě nativního kódu ladicí program nepovažuje první vyhodnocení podmínky za změnu, takže nenarazí na trasovací bod při prvním vyhodnocení.
  • U spravovaného kódu ladicí program po výběru změny přejde na trasovací bod při prvním vyhodnocení.

Podrobnější přehled platných výrazů, které můžete použít při nastavování podmínek, najdete v tématu Výrazy v ladicím programu.

Počet přístupů

Podmínka počtu přístupů umožňuje odesílat výstup až po řádku kódu, ve kterém je nastavený tracepoint, zadanou dobu.

Pokud chcete zjistit počet přístupů, můžete zvolit výstup zprávy, když byl řádek kódu, ve kterém je nastaven tracepoint, proveden určitou dobu. Na základě požadavku může být roven nebo je násobkem nebo je větší nebo roven zadané hodnotě počtu přístupů. Zvolte možnost, která nejlépe vyhovuje vašim potřebám, a do pole zadejte celočíselnou hodnotu (například 5), která představuje iteraci zájmu.

Snímek obrazovky zobrazující počet přístupů k podmíněnému výrazu

Podmínka počtu přístupů umožňuje odesílat výstup až po řádku kódu, ve kterém je nastavený tracepoint, zadanou dobu.

Pokud chcete zjistit počet přístupů, můžete zvolit výstup zprávy, když byl řádek kódu, ve kterém je nastaven tracepoint, proveden určitou dobu. Na základě požadavku může být roven nebo je násobkem nebo je větší nebo roven zadané hodnotě počtu přístupů. Zvolte možnost, která nejlépe vyhovuje vašim potřebám, a do pole zadejte celočíselnou hodnotu (například 5), která představuje iteraci zájmu.

Snímek obrazovky zobrazující počet přístupů k podmíněnému výrazu

Zarážku u prvního přístupového bodu můžete odebrat také tak, že po dosažení klávesy zaškrtnete políčko Odebrat zarážku.

Snímek obrazovky znázorňující odebrání zarážky při prvním spuštění

Filter

U podmínky filtru určete, pro která zařízení, procesy nebo výstup vláken se zobrazí.

Snímek obrazovky zobrazující filtr podmíněného výrazu

Seznam výrazů filtru:

  • MachineName = "name"
  • ProcessId = hodnota
  • ProcessName = "name"
  • ThreadId = hodnota
  • ThreadName = "name"

Uzavřete řetězce (například názvy) do dvojitých uvozovek. Hodnoty lze zadat bez uvozovek. Klauzule můžete kombinovat pomocí & (AND), || (OR), ! (NOT) a závorek.

U podmínky filtru určete, pro která zařízení, procesy nebo výstup vláken se zobrazí.

Snímek obrazovky zobrazující filtr podmíněného výrazu

Seznam výrazů filtru:

  • MachineName = "name"
  • ProcessId = hodnota
  • ProcessName = "name"
  • ThreadId = hodnota
  • ThreadName = "name"

Uzavřete řetězce (například názvy) do dvojitých uvozovek. Hodnoty lze zadat bez uvozovek. Klauzule můžete kombinovat pomocí & (AND), || (OR), ! (NOT) a závorek.

Úvahy

I když jsou tracepointy určené k zajištění čistějšího a plynulejšího prostředí ladění. Při jejich používání byste měli vědět o některých aspektech.

Při kontrole vlastnosti nebo atributu objektu se někdy může jeho hodnota změnit. Pokud se hodnota během kontroly změní, není to chyba způsobená samotnou funkcí tracepointu. Použití trasovacích bodů ke kontrole objektů se však těmto náhodným úpravám nevyhne.

Způsob, jakým se výrazy vyhodnocují v poli Zpráva akce , se můžou lišit od jazyka, který aktuálně používáte pro vývoj. Například pro výstup řetězce, který nepotřebujete zabalit do uvozovek, i když byste normálně používali Debug.WriteLine() nebo console.log(). Složená závorka ({ }) pro výstupní výrazy se také může lišit od konvence pro výstup hodnot ve vašem vývojovém jazyce. (Obsah složených závorek ({ }) by se ale měl zapsat pomocí syntaxe vývojového jazyka.

Pokud se pokoušíte ladit živou aplikaci a hledáte podobnou funkci, podívejte se na naši funkci bodu protokolu v ladicím programu Snapshot Debugger. Ladicí program snímků je nástroj sloužící k prošetření problémů v produkčních aplikacích. Protokolovací body také umožňují odesílat zprávy do okna výstupu, aniž byste museli upravovat zdrojový kód a neovlivňují spuštěnou aplikaci. Další informace najdete v tématu Ladění živé aplikace Azure.