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.

Screenshot of a sample counter program.

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 polem 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.

    Screenshot showing the Breakpoint Initialization in the sample code.

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

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

    Screenshot showing Breakpoint Window.

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

    Screenshot of breakpoint window with Actions Box checked.

    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 .

    Screenshot of breakpoint window with Conditions Box checked.

    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 polem 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.

    Screenshot showing the Breakpoint Initialization in the sample code.

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

    Screenshot showing Breakpoint Window.

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

    Screenshot of breakpoint window with Actions Box checked.

    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 .

    Screenshot of breakpoint window with Conditions Box checked.

    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}.

Screenshot showing Counter Output Message.

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

Screenshot showing Actions Message In Output Window.

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).

Klíčové slovo 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 Process ID
$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.

Screenshot showing Counter Output Message.

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

Screenshot showing Actions Message In Output Window.

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).

Klíčové slovo 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 Process ID
$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.

Screenshot showing Conditional Expression Is 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.

Screenshot showing when Conditional Expression is Changed.

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.

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.

Screenshot showing Conditional Expression Is 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.

Screenshot showing when Conditional Expression is Changed.

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 zarážky Nastavení. V seznamu voleb můžete zvolit libovolnou zarážku.

Screenshot showing enable when a breakpoint is hit checked.

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.

Screenshot showing Conditional Expression Hit Count.

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.

Screenshot showing Conditional Expression Hit Count.

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.

Screenshot showing Remove breakpoint on first hit.

Filtr

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

Screenshot showing Conditional Expression Filter.

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í.

Screenshot showing Conditional Expression Filter.

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.

Důležité informace

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.