Tylko mój kod
Deweloperzy korzystający z języków.NET Framework są zaznajomieni z tylko kod Moje debugera funkcja, która się systemu, ramy i innych połączeń-user i zwija tych wywołuje w oknach wywołanie stosu.Visual Studio 2013 r. po prostu mój kod został przedłużony do języków C++ i JavaScript.W tym temacie opisano szczegółowe informacje na temat używania tylko moje kodu.NET Framework, macierzystym C++ i JavaScript projektów.
Zawartość
Włączanie lub wyłączanie tylko moje kodu
.NET Framework tylko mój kod
Po prostu mój kod języka C++
Po prostu mój kod JavaScript
Włączanie lub wyłączanie tylko moje kodu
Aby włączyć lub wyłączyć tylko mój kod, wybierz polecenie Opcje i ustawienia na Debug menu.W Debugowanie / Ogólne węzła, wybierz lub wyczyść Włączyć tylko kod Mój.
[!UWAGA]
Włączyć tylko kod Mój ustawienie jest ustawieniem globalnym, która jest stosowana do wszystkich projektów programu Visual Studio we wszystkich językach.
Zastąpić wywołanie stosu filtrowania
W wywołanie stosu ekranów, takich jak stos wywołań i zadania systemu windows po prostu mój kod zwija kod niebędący użytkownikami do ramki adnotacjami etykietą [External Code].Aby wyświetlić zwiniętego ramki, wybierz polecenie Pokaż kod zewnętrzny w menu kontekstowym stos wywołań wyświetlania.
[!UWAGA]
Pokaż kod zewnętrzny ustawienie jest zapisywane do profiler bieżącego użytkownika.Jest stosowana do wszystkich projektów we wszystkich językach, które są otwierane przez użytkownika.
.NET Framework tylko mój kod
Kod użytkownika i użytkownik nie**|Stepping behavior|Breakpoint behavior|**Zachowanie wyjątek
Kod użytkownika i niebędący użytkownikami
Aby rozróżnić kod użytkownika z kodu-user, po prostu mój kod wygląda na otwartych projektów, pliki symboli (.pdb) i optymalizacji programu.
Jeśli plik binarny jest zbudowana z Otwórz projekt programu Visual Studio, uważa się zawsze kod użytkownika.
Debuger uważa kod jest kod niebędący użytkownikami, gdy jest zoptymalizowany plik binarny lub plik .pdb jest niedostępny.
Trzy atrybuty wpływa również na co narzędzie debugger uważa za mój kod:
DebuggerNonUserCodeAttributemówi debugera, że kod, który jest stosowany do nie jest mój kod.
DebuggerHiddenAttributeUkrywa kod z debugera, nawet jeśli tylko mój kod jest wyłączona.
DebuggerStepThroughAttributezawiera informacje debugera, aby przetwarzać kod, który jest stosowany do, a nie krok do kodu.
Inny kod jest uważana za kod użytkownika.
Stepping zachowanie
Gdy użytkownik Step Into (skrót klawiaturowy: F11) kod niebędący użytkownikami, kroki debuger kodu do następnej instrukcji użytkownika.Gdy użytkownik Step Out (klawiatura: Shift + F11), debugera do następnego wiersza kodu użytkownika.Jeśli napotkano żadnego kodu użytkownika, a następnie kontynuuje wykonywanie aż do aplikacji wyjścia, przerwania lub wystąpi wyjątek.
Zachowanie punkt przerwania
Tylko moje kod jest włączony, można wybrać Złamać wszystkie (klawiatura: Ctrl + Alt + Break) i zatrzymać wykonywanie w miejscu w przypadku, gdy nie ma żadnego kodu użytkownika do wyświetlenia.W takim przypadku zostanie wyświetlone okno nr źródła.Jeśli następnie polecenia krok, debuger powoduje przejście do następnego wiersza kodu użytkownika.
Zachowanie wyjątek
Jeśli wystąpi nieobsługiwany wyjątek w kodzie-user, debuger przerwy w wierszu w kodzie użytkownika, gdzie został wygenerowany wyjątek.
Włączenie wyjątku pierwszy wyjątki szansy linii kodu użytkownika podświetlone jest na zielono.Stos wywołań Wyświetla adnotacjami klatce oznaczonej etykietą [Kod zewnętrzny].
Po prostu mój kod języka C++
Kod użytkownika i użytkownik nie**|Stepping behavior|Exception behavior|Dostosuj stepping zachowanie|**Dostosuj wywołanie stosu zachowanie
Kod użytkownika i niebędący użytkownikami
Tylko moje kodem w języku C++ jest inny niż mój kod po prostu JavaScript i.NET Framework, ponieważ wstępnej zachowanie jest niezależne od zachowanie wywołanie stosu.
Stosy wywołań
Domyślnie narzędzie debugger uważa tych funkcji jest kod niebędący użytkownikami w systemie windows wywołanie stosu:
Funkcje odżyłowanego źródła informacji w swoim pliku symboli.
Funkcje, gdzie pliki symboli wskazują, że plik nie istnieje źródło odpowiadające ramek stosu.
Funkcji określonych w *.natjmc w pliki %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folder.
Stepping
Domyślnie, tylko funkcji określonych w *.natstepfilter w pliki %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folderu są uważane za kod niebędący użytkownikami.
Można tworzyć własne .natstepfilter i .natjmc dostosować wzmocnienie i wywołać zachowanie okna stosu w %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers.
Stepping zachowanie
Gdy użytkownik Step Into (skrót klawiaturowy: F11) kod niebędący użytkownikami z kodu użytkownika, kroki debuger kodu do następnego wiersza kodu użytkownika.Gdy użytkownik Step Out (klawiatura: Shift + F11), debugera do następnego wiersza kodu użytkownika.Jeśli napotkano żadnego kodu użytkownika, a następnie kontynuuje wykonywanie aż do aplikacji wyjścia, przerwania lub wystąpi wyjątek.
Jeśli debuger przerwy w kodzie-user (na przykład, jeśli polecenie Przerwij wszystko zatrzyma się kod niebędący użytkownikami), wzmocnienie nadal w kodzie-user.
Zachowanie wyjątek
Kiedy debuger trafienia wyjątek, zatrzymał się na wyjątek, niezależnie od tego, czy użytkownik lub kod niebędący użytkownikami.Z nieobsługiwanym użytkownika opcje w programie Wyjątki okno dialogowe są ignorowane.
Dostosowywanie zachowania wstępnej
Można określić funkcje do kroku przez umieszczenie ich jako kod niebędący użytkownikami w *.natstepfilter pliki.
Aby określić kod niebędący użytkownikami dla wszystkich użytkowników komputera, Visual Studio, należy dodać plik .natstepfilter do %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folder.
Aby określić kod niebędący użytkownikami dla poszczególnych użytkowników, Dodaj plik .natstepfilter do %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers folder.
.natstepfilter pliki są plikami xml o następującej składni:
<?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 |
Opis |
---|---|
Funkcja |
Wymagany.Określa jedną lub więcej funkcji jako funkcje-user. |
Name |
Wymagany.ECMA-262 sformatowany określając nazwę pełnego działania funkcji, aby dopasować wyrażenie regularne.Na przykład: <Name>MyNS::MyClass.*</Name> zawiera informacje debugera wszystkie metody w MyNS::MyClass mają być traktowane jako kod niebędący użytkownikami.Dopasowanie jest uwzględniana wielkość liter. |
Module |
Opcjonalnie.ECMA-262 sformatowany wyrażenia regularnego, określając pełną ścieżkę do modułu zawierająca funkcję.Dopasowanie jest rozróżniana wielkość liter. |
Action |
Wymagany.Jedną z tych wartości wielkość liter:
|
Dostosuj zachowanie wywołanie stosu
Można określić modułów, pliki źródłowe i funkcje traktować jako kod niebędący użytkownikami w stosy wywołań przez wskazanie ich w *.natjmc pliki.
Aby określić kod niebędący użytkownikami dla wszystkich użytkowników komputera, Visual Studio, należy dodać plik .natjmc do %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folder.
Aby określić kod niebędący użytkownikami dla poszczególnych użytkowników, Dodaj plik .natjmc do %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers folder.
.natjmc pliki są plikami xml o następującej składni:
<?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>
Moduł atrybutów elementów
Atrybut |
Opis |
---|---|
Name |
Wymagany.Pełna ścieżka modułu lub modułów.Można używać symboli wieloznacznych Windows ? (zero lub jeden znaków) i * (zero lub więcej znaków).Na przykład: <Module Name=”?:\3rdParty\UtilLibs\*” /> zawiera informacje debugera, aby traktować wszystkie moduły w \3rdParty\UtilLibs na dowolnym dysku jako kod zewnętrzny. |
Company |
Opcjonalnie.Nazwa firmy, która publikuje modułu, w którym jest osadzony w pliku wykonywalnym.Atrybut ten można użyć, aby odróżnić modułów. |
Element atrybuty pliku
Atrybut |
Opis |
---|---|
Name |
Wymagany.Pełna ścieżka pliku źródłowego lub plików, aby traktować jako kod zewnętrzny.Można używać symboli wieloznacznych Windows ? i * określając ścieżkę. |
Funkcja atrybutów elementów
Atrybut |
Opis |
---|---|
Name |
Wymagany.Pełną nazwę funkcji do traktowania jako kod zewnętrzny. |
Module |
Opcjonalnie.Nazwa lub Pełna ścieżka do modułu, który zawiera funkcję.Atrybut ten można użyć, aby odróżnić funkcje o tej samej nazwie. |
ExceptionImplementation |
Po ustawieniu true, wyświetla stos wywołań funkcji funkcji, który wygenerował wyjątek zamiast tej funkcji. |
Po prostu mój kod JavaScript
Kod użytkownika i użytkownik nie**|Stepping behavior|Breakpoint behavior|Exception behavior|**Dostosować tylko mój kod
Kod użytkownika i niebędący użytkownikami
Kod klasyfikacji
Mój kod po prostu JavaScript kontroluje wyświetlanie stosu stepping i wywołanie Kategoryzacja kodu w jednym z tych klasyfikacji:
MyCode |
Kod użytkownika, który należy do użytkownika i kontroli. |
LibraryCode |
Kod użytkownika inne niż z bibliotek, które są używane regularnie i aplikacji opiera się na działał poprawnie (na przykład WinJS lub jQuery). |
UnrelatedCode |
Non-user kodu, który może być uruchomiony w aplikacji, ale nie są jego własnością i aplikacji bezpośrednio nie opiera się na to, aby działać poprawnie (na przykład reklamy SDK, który wyświetla reklamy).W projektach Sklep Windows wszelki kod, który jest ładowany do swojej aplikacji HTTP lub HTTPS URI również uznaje się za UnrelatedCode. |
Debuger JavaScript automatycznie klasyfikuje następujących typów kodu:
Skrypt wykonywany przez przekazanie ciągu do hosta dostarczonych przez eval funkcja jest klasyfikowany jako MyCode.
Skrypt wykonywany, przekazując ciąg do Function Konstruktor jest klasyfikowany jako LibraryCode.
Skrypt, który zawarty w odwołaniu framework, takie jak WinJS lub Azure SDK, jest klasyfikowany jako LibraryCode.
Skrypt wykonywany, przekazując ciąg do setTimeout, setImmediate, lub setInterval funkcje są klasyfikowane jako UnrelatedCode.
%VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json Określa inny kod użytkownika i użytkownik nie dla wszystkich projektów programu Visual Studio JavaScript.
Można modyfikować domyślne klasyfikacje i klasyfikowania określonych plików i adresów URL przez add .json plik o nazwie mycode.json do folderu głównego projektu.
Inny kod jest klasyfikowany jako MyCode.
Stepping zachowanie
Jeśli funkcja nie jest użytkownikiem (MyCode) kod, Step Into (skrót klawiaturowy: F11) zachowuje się jak Kroku nad (klawiatura: F10).
Jeśli krok rozpoczyna się w niebędący użytkownikami (LibraryCode lub UnrelatedCode) – kod, a następnie stepping tymczasowo działa tak, jakby tylko mój kod nie jest włączona.Tak szybko, jak krok wstecz do kodu użytkownika, po prostu mój kod stepping zostanie ponownie włączony.
Gdy kroku w kodzie użytkownika skutkuje opuszczania bieżącego kontekstu wykonywania (na przykład czynności opisanej w punkcie w ostatnim wierszu program obsługi zdarzeń), debuger zatrzymuje się na następny wykonanego wiersza kodu użytkownika.Na przykład, jeśli wywołanie zwrotne jest wykonywana w LibraryCode kod Debuger kontynuuje aż do następnego wiersza kodu użytkownika jest wykonywana.
Step Out (klawiatura: Shift + F11) zatrzymuje się w następnym wierszu kodu użytkownika.Jeśli napotkano żadnego kodu użytkownika, a następnie kontynuuje wykonywanie aż do aplikacji wyjścia, przerwania lub wystąpi wyjątek.
Zachowanie punkt przerwania
Punkty przerwania, które zostały ustawione w dowolny kod zawsze trafi niezależnie od klasyfikacji tego kodu
Jeśli debugger napotkaniu słowo kluczowe:
LibraryCode kod, debuger zawsze podziały.
UnrelatedCode kod, nie spowodował zatrzymania debugera.
Zachowanie wyjątek
Jeśli w wystąpi wyjątek nieobsłużony:
MyCode lub LibraryCode kod, debuger zawsze podziały.
UnrelatedCode kod, i MyCode lub LibraryCode kod jest na stosie wywołań, podziały debugera.
Jeśli pierwszy szansę wyjątki są włączone dla wyjątku w oknie dialogowym Wyjątki, a wyjątek w LibraryCode lub UnrelatedCode kodu:
Jeśli obsługiwany jest wyjątek, nie przerwanie debugera.
Jeśli ten wyjątek nie jest obsługiwany, powoduje przerwanie debugera.
Dostosowywanie tylko mój kod
Do klasyfikowania użytkownika i kod niebędący użytkownikami dla jednego projektu programu Visual Studio, dodać .json plik o nazwie mycode.json do folderu głównego projektu.
Klasyfikacje są wykonywane w następującej kolejności:
Klasyfikacje domyślne
Klasyfikacje w %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json pliku
Klasyfikacje w mycode. json pliku bieżącego projektu.
Każdy krok klasyfikacji zastępuje poprzednie kroki.Aby wyświetlić listę wszystkich par wartości klucza, nie wymaga pliku .json i MyCode, biblioteki, i niepowiązani wartości mogą być puste tablice.
Moje pliki .json kodu należy użyć następującej składni:
{
"Eval" : "Classification",
"Function" : "Classification",
"ScriptBlock" : "Classification",
"MyCode" : [
"UrlOrFileSpec”,
. . .
"UrlOrFileSpec”
],
"Libraries" : [
"UrlOrFileSpec”,
. .
"UrlOrFileSpec”
],
"Unrelated" : [
"UrlOrFileSpec”,
. . .
"UrlOrFileSpec”
]
}
Eval, funkcji i blok skryptu
Eval, Funkcja, i Blok skryptu par wartości klucza ustalenia jak dynamicznie wygenerowanego kodu jest klasyfikowany.
Eval |
Skrypt wykonywany przez przekazanie ciągu do hosta dostarczonych przez eval funkcji.Domyślnie skrypt Eval jest klasyfikowany jako MyCode. |
Funkcja |
Skrypt wykonywany, przekazując ciąg do Function Konstruktor.Domyślnie funkcja skryptów jest klasyfikowany jako LibraryCode. |
Blok skryptu |
Skrypt wykonywany, przekazując ciąg do setTimeout, setImmediate, lub setInterval funkcji.Domyślnie skrypt blok skryptu jest klasyfikowany jako UnrelatedCode. |
Wartość można zmienić na jeden z tych słów kluczowych:
MyCodeklasyfikuje skrypt jako MyCode.
Libraryklasyfikuje skrypt jako LibraryCode.
Unrelatedklasyfikuje skrypt jako UnrelatedCode.
MyCode, biblioteki, jak i niepowiązanych
MyCode, biblioteki, i niepowiązani par wartości klucza podać adresy URL lub pliki, które mają zostać uwzględnione w klasyfikacji:
MyCode |
Tablica adresów URL lub pliki, które są sklasyfikowane jako MyCode. |
Biblioteki |
Tablica adresów URL lub pliki, które są sklasyfikowane jako LibraryCode. |
Niepowiązane |
Tablica adresów URL lub pliki, które są sklasyfikowane jako UnrelatedCode. |
Ciąg adresu url lub pliku może zawierać jedną lub więcej * znaków, które odpowiadają zero lub więcej znaków.*jest to równoważne wyrażenie regularne .*.