Tylko mój kod
Programiści korzystający z platformy .NET Framework, języki znasz tylko kod Moje funkcja debuger kroków przez system, struktury i inne wywołania niezwiązanych z użytkownikiem i zwija te wywołuje w systemie windows stosu połączenia. W programie Visual Studio 2013 tylko 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 mój kod w .NET Framework, macierzystym C++ i JavaScript projektów.
Zawartość
Włączać lub wyłączać tylko mój kod
.NET framework tylko mój kod
Po prostu mój kod języka C++
Po prostu mój kod JavaScript
Włączać lub wyłączać tylko mój kod
Aby włączyć lub wyłączyć tylko mój kod, wybierz polecenie opcji i ustawień na Debugowanie menu. W Debugowanie / Ogólne węzła, wybierz lub wyczyść włączyć tylko kod Moje.
Uwaga
Włączyć tylko kod Moje ustawienie to ustawienie globalne zastosowany do wszystkich projektów Visual Studio we wszystkich językach.
Zastąp filtrowanie stosu połączenia
W wyświetla stos połączenia, takich jak windows stos wywołań i zadania, po prostu mój kod zwija niezwiązanych z użytkownikiem kodu do ramki adnotacjami etykietą [External Code]. Aby wyświetlić zwiniętego ramki, wybierz polecenie Pokaż kod zewnętrzny w menu kontekstowym stosu wywołań wyświetlania.
Uwaga
Pokaż kod zewnętrzny zapisania ustawień w profiler bieżącego użytkownika.Jest ona 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 niezwiązanych z użytkownikiem | Zachowanie przechodzenia krok po kroku | Zachowanie punkt przerwania | Zachowanie wyjątków
Kod użytkownika i niezwiązanych z użytkownikiem
Aby rozróżnić kod użytkownika z kodu niezwiązanych z użytkownikiem, tylko mój kod sprawdza otwartych projektów, pliki symboli (.pdb) i optymalizacji programu.
Jeśli binary jest tworzona na podstawie Otwórz projekt programu Visual Studio, zawsze jest uznawany za kodu użytkownika.
Debuger uważa, należy kodu niezwiązanych z użytkownikiem, gdy zoptymalizowano pliku binarnego lub plik .pdb nie jest dostępny.
Trzy atrybuty wpłynąć na debuger traktuje jako mój kod:
DebuggerNonUserCodeAttribute informuje debuger, że kod, który jest stosowany do nie jest mój kod.
DebuggerHiddenAttribute Ukrywa kodu z debugerem, nawet jeśli tylko mój kod jest wyłączona.
DebuggerStepThroughAttribute Określa, że debuger celu kroków kod, który jest stosowane do, zamiast krok w kodzie.
Inny kod jest traktowany jako kodu użytkownika.
Zachowanie przechodzenia krok po kroku
Gdy użytkownik Wkrocz (skrótu klawiaturowego: F11) niezwiązanych z użytkownikiem kod, debuger czynności przez kod do następnej instrukcji użytkownika. Gdy użytkownik Wyjdź (klawiatury: Shift + F11), uruchomieniu debugera do następnego wiersza kodu użytkownika. Jeśli okaże się żadnego kodu użytkownika, a następnie wykonywanie jest kontynuowane do aplikacji wyjścia punkt przerwania jest trafić lub wystąpienia wyjątku.
Zachowanie punkt przerwania
Po prostu mój kod jest włączony, można wybrać Podziel wszystkie (klawiatura: Ctrl + Alt + Break) i zatrzymać wykonanie w wybranej lokalizacji w przypadku, gdy nie jest wykonywany kod użytkownika do wyświetlenia. W takim przypadku zostanie wyświetlone okno nr źródła. W przypadku następnie polecenie kroku, debuger spowoduje przejście do następnego wiersza kodu użytkownika.
Zachowanie wyjątków
W przypadku nieobsługiwany wyjątek w kodzie niezwiązanych z użytkownikiem debuger dzieli się w wierszu w kodzie użytkownika, gdy wyjątek został wygenerowany.
Jeśli pierwszy szansy wyjątki są włączone dla wyjątku, wiersz kodu użytkownika jest wyróżniony zielonym. Stos wywołań Wyświetla adnotacjami ramki etykietą [kodu zewnętrznego].
Po prostu mój kod języka C++
Kod użytkownika i niezwiązanych z użytkownikiem | Zachowanie przechodzenia krok po kroku | Zachowanie wyjątków | Dostosuj zachowanie przechodzenia krok po kroku | Dostosuj zachowanie stosu połączenia
Kod użytkownika i niezwiązanych z użytkownikiem
Mój kod po prostu C++ są inne niż .NET Framework i mój kod po prostu JavaScript, ponieważ przechodzenia krok po kroku zachowanie zależy od zachowania stosu połączenia.
Stosy wywołań
Domyślnie debuger traktuje jako kod niezwiązanych z użytkownikiem w systemie windows stosu połączenie tych funkcji:
Funkcje pozbawionego włókien źródła informacji w pliku symboli.
Funkcje, których pliki symboli oznaczać, że plik nie istnieje źródło odpowiadające ramki stosu.
Funkcje określone w *.natjmc pliki w %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folder.
Krok
Domyślnie działa tylko określone w *.natstepfilter pliki w %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folderu są uznawane za kodu niezwiązanych z użytkownikiem.
Można tworzyć własne .natstepfilter i .natjmc Aby dostosować, przeglądania i wywołać zachowanie okna stosu %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers.
Zachowanie przechodzenia krok po kroku
Gdy użytkownik Wkrocz (skrótu klawiaturowego: F11) kod niezwiązanych z użytkownikiem z kodu użytkownika, debuger czynności przez kod do następnego wiersza kodu użytkownika. Gdy użytkownik Wyjdź (klawiatury: Shift + F11), uruchomieniu debugera do następnego wiersza kodu użytkownika. Jeśli okaże się żadnego kodu użytkownika, a następnie wykonywanie jest kontynuowane do aplikacji wyjścia punkt przerwania jest trafić lub wystąpienia wyjątku.
Jeśli debuger dzieli w kodzie niezwiązanych z użytkownikiem (na przykład, jeśli polecenie Podziel wszystkie zatrzymuje w kodzie niezwiązanych z użytkownikiem), krok jest nadal w kodzie niezwiązanych z użytkownikiem.
Zachowanie wyjątków
Gdy debuger trafi wyjątek, zatrzymał się na wyjątek niezależnie od tego, czy jest ona użytkownika lub kod niezwiązanych z użytkownikiem. Nieobsłużony użytkownika opcje w programie Wyjątki okno dialogowe są ignorowane.
Dostosuj zachowanie przechodzenia krok po kroku
Można określić funkcji do kroku przez wyświetlanie ich jako kod niezwiązanych z użytkownikiem w *.natstepfilter plików.
Aby określić kod niezwiązanych z użytkownikiem dla wszystkich użytkowników na komputerze programu Visual Studio, należy dodać. Plik natstepfilter do %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folderu.
Aby określić kod niezwiązanych z użytkownikiem dla poszczególnych użytkowników, należy dodać. Plik natstepfilter do %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers folderu.
. pliki natstepfilter są plikami xml zawierającymi 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 |
Parametr wymagany. Określa jedną lub więcej funkcji jako funkcje niezwiązanych z użytkownikiem. |
Name |
Parametr wymagany. ECMA 262 sformatowany wyrażenie regularne, określając nazwę funkcji pełną do dopasowania. Na przykład: <Name>MyNS::MyClass.*</Name> zawiera informacje debugera wszystkie metody w MyNS::MyClass mają być traktowane jako kod niezwiązanych z użytkownikiem. Dopasowanie jest uwzględniana wielkość liter. |
Module |
Parametr opcjonalny. ECMA 262 sformatowany wyrażenie regularne, określając pełną ścieżką do modułu zawierający funkcję. Dopasowanie jest uwzględniana wielkość liter. |
Action |
Parametr wymagany. Jedną z następujących wartości rozróżniana wielkość liter:
|
Dostosuj zachowanie stosu połączenia
Można określić modułów, plikach źródłowych i funkcje do traktowania jako kod niezwiązanych z użytkownikiem w stosy wywołań, określając je w *.natjmc plików.
Aby określić kod niezwiązanych z użytkownikiem dla wszystkich użytkowników na komputerze programu Visual Studio, należy dodać. Plik natjmc do %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers folderu.
Aby określić kod niezwiązanych z użytkownikiem dla poszczególnych użytkowników, należy dodać. Plik natjmc do %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers folderu.
. pliki natjmc są plikami xml zawierającymi 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 |
Parametr wymagany. Pełna ścieżka modułu lub modułów. Można użyć symboli wieloznacznych Windows ? (zero lub jedną znaków) i * (zero lub więcej znaków). Na przykład <Module Name=”?:\3rdParty\UtilLibs\*” /> zawiera informacje debugera do traktowania wszystkie moduły w \3rdParty\UtilLibs na dowolnym dysku jako kodu zewnętrznego. |
Company |
Parametr opcjonalny. Nazwa firmy, która publikuje moduł, który jest osadzony w pliku wykonywalnego. Ten atrybut służy do odróżniania modułów. |
Element atrybuty pliku
Atrybut |
Opis |
---|---|
Name |
Parametr wymagany. Pełna ścieżka do plików do traktowania jako zewnętrzny kod lub pliku źródłowego. Można użyć symboli wieloznacznych Windows ? i * określając ścieżkę. |
Funkcja atrybutów elementów
Atrybut |
Opis |
---|---|
Name |
Parametr wymagany. W pełni kwalifikowana nazwa funkcji do traktowania jako kodu zewnętrznego. |
Module |
Parametr opcjonalny. Nazwa lub Pełna ścieżka do modułu, w którym znajduje się funkcja. Ten atrybut służy do odróżniania funkcji o takiej samej nazwie. |
ExceptionImplementation |
Jeśli wartość true, stos wywołań zawiera funkcję, która zgłosiła wyjątek zamiast tej funkcji. |
Po prostu mój kod JavaScript
Kod użytkownika i niezwiązanych z użytkownikiem | Zachowanie przechodzenia krok po kroku | Zachowanie punkt przerwania | Zachowanie wyjątków | Dostosować tylko mój kod
Kod użytkownika i niezwiązanych z użytkownikiem
Kod klasyfikacji
Mój kod po prostu JavaScript steruje krok, a następnie wywołać wyświetlania stosu Kategoryzacja kodu w jednym z tych klasyfikacji:
MyCode |
Kod użytkownika posiadania i kontroli. |
LibraryCode |
Kod niezwiązanego z użytkownikiem z biblioteki, często używane i aplikacji polega na działał poprawnie (na przykład WinJS lub jQuery). |
UnrelatedCode |
Niezwiązanego z użytkownikiem jest kod, który może być uruchomiona w aplikacji, ale nie jesteś właścicielem i aplikacji nie bezpośrednio na niej się opierać działał poprawnie (na przykład advertising SDK, która wyświetla reklamy). W projektach Sklepu Windows cały kod, który jest ładowany do aplikacji za pośrednictwem protokołu HTTP lub HTTPS identyfikator URI jest traktowana jako UnrelatedCode. |
Debuger JavaScript klasyfikowanych automatycznie następujących typów kodu:
Skrypt jest wykonywany przez przekazanie ciąg do hosta dostarczonych przez eval etykietą funkcji MyCode.
Skrypt jest wykonywany przez przekazanie ciąg Function etykietą konstruktora LibraryCode.
Skrypt, który znajduje się w odwołania do platformy, takich jak WinJS lub Azure SDK, jest sklasyfikowany jako LibraryCode.
Skrypt jest wykonywany przez przekazanie ciąg setTimeout, setImmediate, lub setInterval etykietą funkcji UnrelatedCode.
%VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json Określa innych użytkowników oraz niezwiązanych z użytkownikiem kod dla wszystkich projektów programu Visual Studio JavaScript.
Możesz zmodyfikować klasyfikacje domyślne i klasyfikowania konkretnych plików i adresów URL go dodać .json pliku o nazwie mycode.json w folderze głównym projektu.
Inny kod jest sklasyfikowany jako MyCode.
Zachowanie przechodzenia krok po kroku
Jeśli funkcja nie jest użytkownikiem (MyCode) kodu, Wkrocz (skrótu klawiaturowego: F11) działa jak Przekrocz (klawiatura: F10).
Jeśli krok zaczyna się w niezwiązanych z użytkownikiem (LibraryCode lub UnrelatedCode) kodu, a następnie przechodzenie tymczasowo działa tak, jakby tylko mój kod nie jest włączone. Zaraz po kroku do kodu użytkownika, po prostu mój kod krok zostanie ponownie włączone.
Jeśli krok w wynikach kodu użytkownika w opuszczania bieżącego kontekstu wykonywania (np. ten krok w ostatnim wierszu programu obsługi zdarzeń), debuger zatrzymuje się na wykonane następnego wiersza kodu użytkownika. Na przykład, jeśli wykonuje wywołanie zwrotne LibraryCode kodu debuger będzie nadal występował, dopóki nie wykonuje następnego wiersza kodu użytkownika.
Wyjdź (klawiatura: Shift + F11) zatrzymuje następnego wiersza kodu użytkownika. Jeśli okaże się żadnego kodu użytkownika, a następnie wykonywanie jest kontynuowane do aplikacji wyjścia punkt przerwania jest trafić lub wystąpienia wyjątku.
Zachowanie punkt przerwania
Zawsze punktów przerwania, które zostały ustawione w dowolnym kodu zostanie uruchomiona niezależnie od klasyfikacji danego kodu
Jeśli debugger napotkania słowo kluczowe w:
LibraryCode kodu, debuger zawsze dzieli.
UnrelatedCode kodu, debuger nie zatrzymania.
Zachowanie wyjątków
W przypadku nieobsługiwany wyjątek w:
MyCode lub LibraryCode kodu, debuger zawsze dzieli.
UnrelatedCode kodu, a MyCode lub LibraryCode kod znajduje się na stosie wywołań podziały debugera.
Jeśli pierwszy szansy wyjątki są włączone dla wyjątku w oknie dialogowym Wyjątki i wyjątku LibraryCode lub UnrelatedCode kodu:
Jeśli wyjątek jest obsługiwany, debuger nie być dzielone.
Jeśli wyjątek nie jest obsługiwany, debuger dzieli.
Dostosować tylko mój kod
Aby klasyfikowanie użytkownika i kod niezwiązanych z użytkownikiem dla pojedynczego projektu programu Visual Studio, należy dodać .json pliku o nazwie mycode.json w folderze głównym 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żdego kroku klasyfikacji zastępuje poprzednie kroki. Plik .json nie jest konieczne do tworzenia listy wszystkich par kluczy i wartości, a właściwość MyCode, biblioteki, i Unrelated wartości mogą być puste tablic.
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”
]
}
Próbną, funkcji i blok skryptu
Eval, funkcji, i Blok skryptu par kluczy i wartości określenia, jak dynamicznie etykietą wygenerowanego kodu.
Próbną |
Skrypt jest wykonywany przez przekazanie ciąg do hosta dostarczonych przez eval funkcji. Domyślnie etykietą próbną skryptu MyCode. |
Funkcja |
Skrypt jest wykonywany przez przekazanie ciąg Function konstruktora. Domyślnie funkcja skryptu jest sklasyfikowany jako LibraryCode. |
Blok skryptu |
Skrypt jest wykonywany przez przekazanie ciąg setTimeout, setImmediate, lub setInterval funkcji. Domyślnie etykietą skryptu Blok skryptu UnrelatedCode. |
Możesz zmienić wartość do jednej z następujących słów kluczowych:
MyCode skrypt jako klasyfikowanych MyCode.
Library skrypt jako klasyfikowanych LibraryCode.
Unrelated skrypt jako klasyfikowanych UnrelatedCode.
MyCode, biblioteki, a związana
MyCode, biblioteki, i Unrelated par kluczy i wartości Określ adresy URL lub pliki, które mają zostać uwzględnione w klasyfikacji:
MyCode |
Informacje o adresach URL lub pliki, które należą do MyCode. |
Biblioteki |
Informacje o adresach URL lub pliki, które należą do LibraryCode. |
Niepowiązany |
Informacje o adresach URL lub pliki, które należą do UnrelatedCode. |
Ciąg pliku lub adres url może zawierać co najmniej jedną * znaków, które odpowiadają zero lub więcej znaków. * odpowiada wyrażeniu regularnemu .*.