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.

Włącz tylko mój kod w oknie dialogowym Opcje

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.

  1. Jeśli binary jest tworzona na podstawie Otwórz projekt programu Visual Studio, zawsze jest uznawany za kodu użytkownika.

  2. 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:

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:

  • NoStepInto — zawiera informacje debugera do kroku przez funkcję dopasowywany.

  • StepInto — zawiera informacje debugera do wkroczenia do funkcji dopasowywany zastępowanie innych NoStepInto dopasowywany funkcjach.

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:

  1. Klasyfikacje domyślne

  2. Klasyfikacje w %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json pliku

  3. 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 .*.