Sdílet prostřednictvím


Postupy: Ladění optimalizovaného kódu

[!POZNÁMKA]

Dialogová okna a příkazy nabídek, které vidíte, se mohou lišit od těch popsaných v nápovědě v závislosti na aktivních nastaveních nebo edici.Chcete-li změnit nastavení, zvolte nastavení importu a exportu v nabídce Nástroje.Další informace naleznete v tématu Přizpůsobení nastavení pro vývoj v sadě Visual Studio.

[!POZNÁMKA]

/Zo (rozšířené optimalizované ladění)Možnosti kompilátoru (zavedena v sadě Visual Studio Update 3) generuje širší škálou funkcí informace o ladění pro optimalizaci kódu (projekty, které nejsou vytvořených pomocí /Od možnosti kompilátoru.See /O možnosti (optimalizace kódu)).To zahrnuje zdokonalenou podporu pro ladění, místní proměnné a vložená funkce.

Upravit a pokračovat je zakázáno při /Zo ocompiler možnost se používá.

Když kompilátor optimalizuje kódu, přemístí a budou znovu uspořádána pokyny.Výsledkem efektivnější kompilovaný kód.Z důvodu této změny uspořádání nelze ladicí program rozpoznat vždy zdrojový kód, který odpovídá sada instrukcí.

Optimalizace mohou ovlivnit:

  • Místní proměnné, které lze odebrat pomocí pro optimalizaci nebo přesunut do umístění, které ladicí program nedokáže zpracovat.

  • Pozice v rámci funkce, které se změní, když pro optimalizaci sloučí bloky kódu.

  • Názvy funkcí pro rámce v zásobníku volání, které mohou být nesprávné, pokud pro optimalizaci sloučí dvě funkce.

Rámce, které se zobrazí v zásobníku volání jsou téměř vždy správné, ovšem za předpokladu, že máte symboly pro všechny rámce.Pokud máte poškození zásobníku, pokud máte funkce v jazyce sestavení, nebo pokud nejsou rámce operačního systému bez odpovídající symboly v zásobníku volání, budou chybné rámce v zásobníku volání.

Globální a statické proměnné jsou vždy zobrazeny správně.To je strukturu rozložení.Pokud máte ukazatel na strukturu a ukazatel myši nad hodnotu správná, bude obsahovat všechny členské proměnné struktury správnou hodnotu.

Vzhledem k těmto omezením by měl ladit, pokud možno pomocí neoptimalizované verze aplikace.Ve výchozím nastavení je optimalizace vypnuta v konfiguraci ladění programu Visual C++ a v konfiguraci verze povolena.

Chybu však může zobrazit pouze v optimalizovanou verzi programu.V takovém případě musíte ladit optimalizaci kódu.

Chcete-li zapnout optimalizace v ladicího konfiguraci sestavení

  1. Když vytvoříte nový projekt, vyberte Win32 Debug cíl.Použití Win32Debug cíl, dokud váš program je plně ladit a jste připraveni k vytváření Win32 Release cíl.Kompilátor není optimální Win32 Debug cíl.

  2. Vyberte projekt v Průzkumníku řešení.

  3. Na zobrazení nabídce klepněte na tlačítko stránky vlastností.

  4. V stránky vlastností dialogové okno zkontrolujte, zda Debug se vybírá v konfigurace rozevíracího seznamu.

  5. V zobrazení složky na levé straně, vyberte C/C++ složky.

  6. V části C++ složku, vyberte možnost Optimization.

  7. V seznamu vlastnosti v pravé části Najít Optimization.Nastavení vedle sebe pravděpodobně říká Disabled (/Od).Choose one of the other options (Minimum Size(/O1), Maximum Speed(/O2), Full Optimization(/Ox), or Custom).

  8. Pokud jste zvolili Custom možnost Optimization, nyní lze nastavit možnosti pro žádné jiné vlastnosti uvedeny v seznamu vlastnosti.

  9. Vlastnosti mezipamětí, C/C++, uzel příkazového řádku stránky vlastnosti projektu, vyberte a přidejte (/Zo) k další možnosti textového pole.

    Poznámka k upozorněníUpozornění

    /Zovyžaduje sadu Visual Studio 2013 Update 3 nebo novější.

    Přidání /Zo zakáže upravit a pokračovat.

Při ladění optimalizaci kódu pomocí převodu okna zobrazíte jaké pokyny ve skutečnosti jsou vytvářena a provedení.Až budete nastavovat zarážky, musíte vědět, zda může být zarážky přesunout spolu s instrukce.Zvažte například následující kód:

for (x=0; x<10; x++)

Předpokládejme, že nastavení zarážky na tento řádek.Byste očekávali zarážky být narazí 10krát, ale pokud kód je optimalizována, zarážky je zasažení pouze jednou.Důvodem je, že první pokyn nastaví hodnotu x na hodnotu 0.Kompilátor rozpozná, že to pouze je nutné provést jednou a přesune z cyklu.Zarážky přesune s ním.Pokyny, které porovnání a zvýšit x zůstat v rámci cyklu.Při zobrazení zpětný překlad okna, krok jednotka je automaticky nastaven na pokyn větší kontrolu, které lze využít při krokování optimalizované kódu.

Viz také

Koncepty

Zabezpečení ladicího programu

Další zdroje

Ladění nativního kódu