Pouze můj kód

Pouze můj kód volá funkce ladicí program kroky přes systém, framework a další volání jiných uživatelů, sbalí ty v zásobníku volání windows znají vývojáři, kteří používají jazyky rozhraní.NET Framework.V aplikaci Visual Studio 2013 byla rozšířena pouze kód do jazyků C++ a JavaScript.Toto téma popisuje specifika použití pouze můj kód v rozhraní.NET Framework, nativní C++ a JavaScript projekty.

Obsah

Povolit nebo zakázat pouze můj kód

Rozhraní.NET Framework pouze kód

Pouze kód jazyka C++

Pouze kód jazyka JavaScript

Povolit nebo zakázat pouze můj kód

Chcete-li povolit nebo zakázat pouze můj kód, zvolte možností a nastavení v ladění nabídky.V ladění / Obecné uzlu, vyberte nebo zrušte Povolit pouze můj kód.

Povolit pouze můj kód v dialogovém okně Možnosti

[!POZNÁMKA]

Povolit pouze můj kód nastavení je globální nastavení, které platí pro všechny projekty Visual Studio ve všech jazycích.

Přepsat filtrování zásobníku volání

Pouze můj kód v zobrazí zásobník volání, například zásobník volání a úloh systému windows, sbalí bez uživatelského kódu do rámečku s poznámkami s názvem [External Code].Zobrazení sbaleného snímky, zvolte Zobrazit externího kódu zobrazit v kontextové nabídce zásobníku volání.

[!POZNÁMKA]

Zobrazit externího kódu je uloženo nastavení pro aktuálního uživatele profiler.Platí pro všechny projekty ve všech jazycích, které jsou otevřeny uživatelem.

Rozhraní.NET Framework pouze kód

Uživatel a bez uživatelského kódu**|Stepping behavior|Breakpoint behavior|**Chování výjimek

Kód uživatele a jiných uživatelů

Uživatelský kód odlišit od jiných uživatelského kódu, pouze můj kód vypadá na otevřené projekty, soubory symbolů (PDB) a optimalizace programu.

  1. Pokud do binárního souboru je sestavena z otevření projektu sady Visual Studio, považuje vždy kód uživatele.

  2. Ladicí program bere v úvahu kód bez uživatelského kódu je optimalizováno binární soubor nebo soubor PDB není k dispozici.

Ladicí program považuje na můj kód ovlivňují také tři atributy:

Uživatelský kód je považován za jiný kód.

Krokování chování

Když je Krok do (klávesové zkratky: F11) bez uživatelského kódu, ladicí program přes kód příkazu Další uživatele.Pokud jste Krok ven (klávesnice: Shift + F11), bude spuštěn ladicí program na další řádek kódu uživatele.Pokud je nalezen žádný kód uživatele a pak pokračuje až do aplikace ukončí, je narazí na bod přerušení nebo dojde k výjimce.

Chování zarážka

Pokud je povoleno pouze můj kód, můžete Přerušit všechny (klávesnice: Ctrl + Alt + Break) a zastavíte na místě kde není žádný kód uživatele k zobrazení.Pokud k tomu dojde, zobrazí se okno zdroj č.Poté zvolíte příkaz kroku, ladicí program přejde na další řádek kódu uživatele.

Chování výjimek

Pokud dojde k nezpracované výjimce v bez uživatelského kódu, ladicího programu konce řádku v uživatelském kódu, kde byla generována výjimka.

Pokud první možnost výjimky jsou povoleny výjimky, uživatelský kód řádek zvýrazní zeleně.Zásobník volání, zobrazí s poznámkami snímku s popisem [Externí kód].

Pouze kód jazyka C++

Uživatel a bez uživatelského kódu**|Stepping behavior|Exception behavior|Posílení vlastní chování|**Chování zásobníku volání vlastní

Kód uživatele a jiných uživatelů

Pouze můj kód jazyka C++ se liší od rozhraní.NET Framework a pouze můj kód JavaScript protože taktování chování nezávisí chování zásobníku volání.

Zásobníky volání

Ve výchozím nastavení ladicí program považuje za tyto funkce se bez uživatelského kódu v systému windows zásobník volání:

  • Funkce vypuzením zdroj informací v souboru pro symboly.

  • Funkce, kde soubory symbolů naznačují, že žádný zdrojový soubor odpovídající zásobníku.

  • Funkce uvedené v *.natjmc soubory %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers složky.

Krokování

Ve výchozím nastavení, pouze funkce uvedené v *.natstepfilter soubory %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers složka jsou považovány za non uživatelský kód.

Můžete vytvořit vlastní .natstepfilter a .natjmc přizpůsobit taktování a chování okno zásobníku volání %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers.

Krokování chování

Když je Krok do (klávesové zkratky: F11) bez uživatelského kódu z uživatelského kódu, ladicí program přes kód na další řádek kódu uživatele.Pokud jste Krok ven (klávesnice: Shift + F11), bude spuštěn ladicí program na další řádek kódu uživatele.Pokud je nalezen žádný kód uživatele a pak pokračuje až do aplikace ukončí, je narazí na bod přerušení nebo dojde k výjimce.

Pokud ladicí program přerušení bez uživatelského kódu (například zrušení všech příkazů v případě náhlého ukončení bez uživatelského kódu), krokování pokračuje v non uživatelský kód.

Chování výjimek

Pokud ladicí program narazí výjimku, zastaví se na výjimky bez ohledu na to, zda je uživatel nebo kód jiné uživatele.Uživatelem neošetřená možnosti výjimky dialogovém okně jsou ignorovány.

Přizpůsobit chování taktování

Můžete určit funkce, na kterých je uvedete jako non uživatelský kód v kroku *.natstepfilter soubory.

  • Chcete-li zadat kód mimo uživatele pro všechny uživatele počítače, aplikace Visual Studio, přidat soubor .natstepfilter %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers složky.

  • Určit bez uživatelského kódu pro jednotlivé uživatele, přidejte soubor .natstepfilter %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers složky.

.natstepfilter soubory jsou soubory xml s následující syntaxí:

<?xml version="1.0" encoding="utf-8"?>
<StepFilter xmlns="https://schemas.microsoft.com/vstudio/debugger/natstepfilter/2010">
    <Function>
        <Name>FunctionSpec</Name>
        <Action>StepAction</Action>
    </Function>
    <Function>
        <Name>FunctionSpec</Name>
        <Module>ModuleSpec</Module>
        <Action>StepAction</Action>
    </Function>
</StepFilter>

Element

Description

Funkce

Požadováno.Určuje jednu nebo více funkcí než uživatelské funkce.

Name

Požadováno.ECMA-262 formátu regulárních výrazů zadáním názvu úplné funkce tak, aby odpovídala.Příklad:

<Name>MyNS::MyClass.*</Name>

Určuje ladicí program, který všechny metody v MyNS::MyClass jsou považovány za non uživatelský kód.Porovnání rozlišuje velká a malá písmena.

Module

Volitelné.ECMA-262 formátu regulárních výrazů zadáním úplné cesty k modul, který obsahuje funkci.Porovnávání nerozlišuje velká a malá písmena.

Action

Požadováno.Jedna z těchto hodnot velká a malá písmena:

  • NoStepInto– dává pokyn ladicímu programu Krok přes odpovídající funkce.

  • StepInto– dává pokyn ladicímu programu Krokovat s vnořením odpovídající funkce potlačení jiných NoStepInto pro odpovídající funkce.

Přizpůsobit chování zásobníku volání

Můžete určit moduly, zdrojové soubory a funkce považován za non uživatelský kód v zásobníky volání jejich zadáním ve *.natjmc soubory.

  • Chcete-li zadat kód mimo uživatele pro všechny uživatele počítače, aplikace Visual Studio, přidat soubor .natjmc %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers složky.

  • Určit bez uživatelského kódu pro jednotlivé uživatele, přidejte soubor .natjmc %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers složky.

.natjmc soubory jsou soubory xml s následující syntaxí:

<?xml version="1.0" encoding="utf-8"?>
<NonUserCode xmlns="https://schemas.microsoft.com/vstudio/debugger/jmc/2013">
    
  <!-- Modules -->
  <Module Name="ModuleSpec" />
  <Module Name="ModuleSpec" Company="CompanyName" />
  
  <!-- Files -->
  <File Name="FileSpec"/>
  
  <!-- Functions -->
  <Function Name="FunctionSpec" />
  <Function Name="FunctionSpec" Module ="ModuleSpec" />
  <Function Name="FunctionSpec" Module ="ModuleSpec" ExceptionImplementation="true" />

</NonUserCode>

Atributy prvků modulu

Atribut

Description

Name

Požadováno.Úplná cesta modulu nebo modulu.Můžete použít zástupné znaky systému Windows ? (nula nebo jeden znak) a * (nula nebo více znaků).Příklad:

<Module Name=”?:\3rdParty\UtilLibs\*” />

dává pokyn ladicímu programu považovat všechny moduly v \3rdParty\UtilLibs na libovolné jednotce jako externího kódu.

Company

Volitelné.Název společnosti, která publikuje modul, který je vložen do spustitelného souboru.Tento atribut lze rozlišit modulů.

Atributy souborů

Atribut

Description

Name

Požadováno.Úplná cesta zdrojový soubor nebo soubory zachází jako externího kódu.Můžete použít zástupné znaky systému Windows ? a * při zadání cesty.

Funkce atributy prvků

Atribut

Description

Name

Požadováno.Plně kvalifikovaný název funkce, kterou chcete pracovat jako externí kód.

Module

Volitelné.Název a úplnou cestu k modulu, který obsahuje funkci.Tento atribut lze rozlišit funkcí se stejným názvem.

ExceptionImplementation

Pokud je nastavena na true, zásobník volání, zobrazí funkce funkci, která vyvolala výjimku, spíše než tuto funkci.

Pouze kód jazyka JavaScript

Uživatel a bez uživatelského kódu**|Stepping behavior|Breakpoint behavior|Exception behavior|**Upravit pouze tento kód

Kód uživatele a jiných uživatelů

Kód klasifikace

Pouze můj kód JavaScript řídí zobrazení krokování a volání zásobníku a zařazení kódu v jednom z těchto klasifikací:

MyCode

Kód uživatele, který vlastní a řídí.

LibraryCode

Non uživatelský kód z knihoven, které běžně používáte a vaše aplikace spoléhá na fungovat správně (například WinJS nebo jQuery).

UnrelatedCode

Non uživatelský kód, který může být spuštěn v aplikaci, ale není vlastníkem a aplikace není spoléhat přímo na něm pracovat správně (například reklamy SDK, který zobrazuje reklamy).V projektech webu Windows Store je jakýkoli kód, který je načten do vašeho app z protokolu HTTP nebo HTTPS URI také považován za UnrelatedCode.

JavaScript debugger automaticky klasifikuje typy kódu:

  • Skript je spouštěn předáním řetězce předpokladu hostitele eval funkce je klasifikován jako MyCode.

  • Skript je spouštěn předáním řetězec Function konstruktoru je klasifikován jako LibraryCode.

  • Skript, který je obsažen v rámci odkazu, například WinJS nebo Azure SDK, je klasifikován jako LibraryCode.

  • Skript je spouštěn předáním řetězec setTimeout, setImmediate, nebo setInterval funkce je klasifikován jako UnrelatedCode.

  • %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json Určuje jiný uživatel a ne uživatel kód pro všechny projekty Visual Studio JavaScript.

Můžete upravit výchozí klasifikace a klasifikaci určitých souborů a adres URL pomocí přidání .json soubor s názvem mycode.json ke kořenové složce projektu.

Jiný kód je klasifikován jako MyCode.

Krokování chování

  • Pokud funkce není uživatelem (MyCode) kódu, Krok do (Klávesová zkratka: F11) se chová jako Krok přes (klávesnice: F10).

  • Pokud některý krok začíná v jiných uživatelů (LibraryCode nebo UnrelatedCode) kódu, pak dočasně krokování chovat jakoby pouze můj kód není povoleno.Jakmile jste se přesunuli zpět na kód uživatele, pouze můj kód krokování je znovu povolena.

  • Při kroku v uživatele kód způsobí ponechání aktuální kontext spuštění (například provedením kroku na posledním řádku obslužné rutiny události), ladicí program zastaví na další řádek spuštěný kód uživatele.Například, pokud se provede zpětné volání v LibraryCode kód ladicí program pokračuje, dokud se provede další řádek kódu uživatele.

  • Krok ven (klávesnice: Shift + F11) zastaví na dalším řádku kód uživatele.Pokud je nalezen žádný kód uživatele a pak pokračuje až do aplikace ukončí, je narazí na bod přerušení nebo dojde k výjimce.

Chování zarážka

  • Bez ohledu na zařazení tohoto kódu bude vždy dosaženo zarážky, které byly nastaveny v kódu

  • Pokud debugger je klíčové slovo při:

    • LibraryCode kódu, ladicího programu vždy přeruší.

    • UnrelatedCode kódu, ladicího programu nezastaví.

Chování výjimek

Pokud dojde k nezpracované výjimce v:

  • MyCode nebo LibraryCode kódu, ladicího programu vždy přeruší.

  • UnrelatedCode kód, a MyCode nebo LibraryCode je kód v zásobníku volání konce debugger.

Je-li první možnost výjimky jsou povoleny výjimky v dialogovém okně výjimky a je vyvolána výjimka LibraryCode nebo UnrelatedCode kód:

  • Je-li výjimka, nedojde k narušení ladicí program.

  • V případě, že výjimka není zpracována, ladění se přeruší.

Upravit pouze tento kód

Kategorizace uživatelů a bez uživatelského kódu pro jeden projekt sady Visual Studio, přidejte soubor s názvem .json mycode.json ke kořenové složce projektu.

Klasifikace se provádí v tomto pořadí:

  1. Výchozí klasifikace

  2. Klasifikace v %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json soubor

  3. Klasifikace v mycode. json souboru aktuálního projektu.

Každý krok klasifikace přepíše předchozí kroky.Není nutné uvést všechny dvojice klíč hodnota, soubor .json a MyCode, knihovny, a Unrelated hodnoty mohou být prázdné pole.

.Json soubory kódu, použijte následující syntaxi:

{
    "Eval" : "Classification",
    "Function" : "Classification",
    "ScriptBlock" : "Classification",
    "MyCode" : [
        "UrlOrFileSpec”,
        . . .
        "UrlOrFileSpec”
    ],
    "Libraries" : [
        "UrlOrFileSpec”,
        . .
        "UrlOrFileSpec”
    ],
    "Unrelated" : [
        "UrlOrFileSpec”,
        . . .
        "UrlOrFileSpec”
    ]
}

Eval, funkce a blok skriptu

Eval, funkce, a blok skriptu páry klíč hodnota zjistit, jak dynamicky generovaný kód je klasifikován.

Eval

Skript je spouštěn předáním řetězce předpokladu hostitele eval funkce.Ve výchozím Eval skriptu je klasifikován jako MyCode.

Funkce

Skript je spouštěn předáním řetězec Function konstruktoru.Ve výchozím nastavení, funkce skriptu je klasifikován jako LibraryCode.

Blok skriptu

Skript je spouštěn předáním řetězec setTimeout, setImmediate, nebo setInterval funkce.Ve výchozím nastavení, je blok skriptu skript klasifikován jako UnrelatedCode.

Hodnotu můžete změnit na jeden z těchto klíčových slov:

  • MyCodeklasifikuje jako skript MyCode.

  • Libraryklasifikuje skript jako LibraryCode.

  • Unrelatedklasifikuje skript jako UnrelatedCode.

MyCode, knihovny a nesouvisející

MyCode, knihovny, a Unrelated určit hodnotu klíče páry adres URL nebo souborů, které chcete zahrnout do klasifikace:

MyCode

Pole adres URL nebo souborů, které jsou klasifikovány jako MyCode.

Knihovny

Pole adres URL nebo souborů, které jsou klasifikovány jako LibraryCode.

Nesouvisející

Pole adres URL nebo souborů, které jsou klasifikovány jako UnrelatedCode.

Řetězec adresy url nebo soubor může obsahovat jeden nebo více * znaky, které Porovná žádný nebo více znaků.*regulární výraz odpovídá .*.