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.
[!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.
Pokud do binárního souboru je sestavena z otevření projektu sady Visual Studio, považuje vždy kód uživatele.
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:
DebuggerNonUserCodeAttributeUrčuje ladicí program kód, který je použit k není můj kód.
DebuggerHiddenAttributeSkryje kód z ladicí program, i když pouze můj kód je vypnuto.
DebuggerStepThroughAttributeUrčuje ladicí program ke krokování kódu, které bylo použito, spíše než krok do kódu.
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:
|
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í:
Výchozí klasifikace
Klasifikace v %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json soubor
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á .*.