Sdílet prostřednictvím


Rychlý start: Ladění v C++ pomocí ladicího programu Visual Studio

Ladicí program Visual Studio poskytuje mnoho výkonných funkcí, které vám pomohou ladit vaše aplikace. Toto téma nabízí rychlý způsob, jak se naučit některé základní funkce.

Vytvoření nového projektu

  1. Otevřete Visual Studio a vytvořte projekt.

    Pokud okno Start ještě není otevřené, vyberte Okno Start souboru>. V okně Start vyberte Vytvořit nový projekt. Do vyhledávacího pole zadejte "Prázdný projekt" a pak vyberte šablonu prázdného projektu C++.

    Pokud nevidíte šablonu projektu, otevřete Visual Studio Installer. Vyberte Desktopový vývoj s pracovním zatížením C++, poté zvolte Upravit.

    Visual Studio vytvoří projekt.

    Vytvořte nový zdrojový soubor s názvem MyDbgApp.cpp

  2. V MyDbgApp.cpp nahraďte následující kód

    int main()
    {
        return 0;
    }
    

    s tímto kódem (neodstraňujte #include "stdafx.h"):

    #include <list>
    #include <iostream>
    
    using namespace std;
    
    void doWork()
    {
        list <int> c1;
    
        c1.push_back(10);
        c1.push_back(20);
    
        const list <int> c2 = c1;
        const int &i = c2.front();
        const int &j = c2.front();
        cout << "The first element is " << i << endl;
        cout << "The second element is " << j << endl;
    
    }
    
    int main()
    {
        doWork();
    }
    

Nastavte zarážku

Bod přerušení je značkou, která označuje, kde by měl Visual Studio pozastavit váš běžící kód, abyste mohli zkontrolovat hodnoty proměnných, chování paměti nebo zda se vykonává nějaká větev kódu. Jedná se o nejzákladnější funkci ladění.

  1. Pro nastavení zarážky klikněte do žlábku vlevo od volání funkce doWork (nebo vyberte řádek kódu a stiskněte F9).

    Nastavit bod přerušení

  2. Nyní stiskněte F5 (nebo vyberte Debug > Start Debugging).

    Narazil na přerušení

    Ladicí program se pozastaví tam, kde jste nastavili bod přerušení. Výrok, kde je ladicí program a spuštění aplikace pozastaveno, je označen žlutou šipkou. Řádek s voláním doWork funkce se ještě nespustí.

    Návod

    Pokud máte bod přerušení v cyklu nebo rekurzi, nebo pokud máte mnoho bodů přerušení, které často procházíte, použijte podmíněný bod přerušení, abyste zajistili, že váš kód bude pozastaven POUZE tehdy, když jsou splněny konkrétní podmínky. Podmíněný zarážka šetří čas a může také usnadnit ladění problémů, které je obtížné reprodukovat.

    Když se snažíte ladit chyby související s pamětí v C++, můžete také použít body přerušení k prozkoumání adresních hodnot (hledat NULL) a počtu odkazů.

Existují různé příkazy, které umožňují pokračovat v ladění. Představujeme užitečný příkaz pro navigaci v kódu, který je k dispozici od Visual Studio 2017.

Při pozastavení na bodu přerušení najeďte myší na příkaz c1.push_back(20), dokud se neobjeví zelené tlačítko Spustit na kliknutíRun to Click, a poté stiskněte tlačítko Spustit na kliknutí.

Spustit kliknutím

Aplikace pokračuje v exekuci, volá doWork, a zastaví se na řádku kódu, kde jste klikli na tlačítko.

Běžné příkazy na klávesnici používané k procházení kódem zahrnují F10 a F11. Pro podrobnější pokyny si přečtěte První pohled na ladicí program.

Zkontrolovat proměnné v datatipu

  1. V aktuálním řádku kódu (označeném žlutým ukazatelem provádění) najeďte myší nad objekt c1 pro zobrazení datové nápovědy.

    Zobrazit tooltip

    Datatip vám ukazuje aktuální hodnotu proměnné c1 a umožňuje vám prohlédnout její vlastnosti. Při ladění, pokud vidíte hodnotu, kterou neočekáváte, pravděpodobně máte chybu v předcházejících nebo volajících řádcích kódu.

  2. Rozbalte datovou nápovědu, abyste si prohlédli aktuální hodnoty vlastností objektu c1.

  3. Pokud chcete připnout datatip, abyste mohli pokračovat ve sledování hodnoty c1 při spouštění kódu, klikněte na malou ikonu připnutí. (Můžete přesunout připnutý datatip na pohodlné místo.)

Upravte kód a pokračujte v ladění

Pokud zjistíte změnu, kterou chcete otestovat ve svém kódu uprostřed ladění, můžete to udělat také.

  1. Klikněte na druhý výskyt c2.front() a změňte c2.front() na c2.back().

  2. Stiskněte F10 (nebo Debug > Step Over) několikrát pro posunutí debuggeru a provedení upraveného kódu.

    Upravit a pokračovat

    F10 posouvá ladicí program jeden příkaz po jednom, ale přeskakuje funkce místo toho, aby do nich vstupoval (kód, který přeskakujete, se stále provádí).

Pro více informací o používání funkce edit-and-continue a o omezeních funkcí, viz Edit and Continue.

Další kroky

V tomto kurzu jste se naučili, jak spustit ladicí program, procházet kód a kontrolovat proměnné. Možná budete chtít získat přehled o funkcích debuggeru spolu s odkazy na další informace.