다음을 통해 공유


내 코드만

.NET Framework 언어를 사용 하는 개발자는 내 코드만 호출 스택 창에 호출 하는 디버거 기능은 시스템, 프레임 워크 및 기타 비 사용자 호출을 통해 단계를 축소 하는 것에 익숙합니다. Visual Studio 2013만 코드는 JavaScript 및 c++ 언어를 확장 되었습니다. 이 항목에서는 .NET Framework 네이티브 c++과 JavaScript에서 내 코드만 사용하여 특정 프로젝트를 묘사합니다.

콘텐츠

내 코드만 설정/해제하려면

.NET Framework 내 코드만

C++ 코드만 사용

JavaScript 코드만 사용

내 코드만 설정/해제하려면

단지 내 코드만 사용하거나 사용하지 않기 위해서, 디버그 메뉴의 옵션 및 설정 을 선택하세요. 이 디버깅 / 일반 노드에서, 내 코드만 사용 을 해제하거나 선택하세요.

옵션 대화 상자에서 내 코드만 사용

참고

내 코드만 사용 설정은 모든 언어의 모든 Visual Studio 프로젝트에 적용되는 전역 설정입니다.

호출 스택이 필터링 무시

호출 스택에 출력하면서, 태스크 윈도으와 호출 스택과 같은, 내 코드만은 [External Code] 로 프레임으로 표시된 주석의 non-사용자 코드를 실패합니다. 실패한 프레임을 보려면, 호출 스택에 표현된 상황에 맞는 메뉴의 외부 코드 표시 를 선택하세요.

참고

외부 코드 표시 는 프로파일러는 현재 사용자의 설정이 저장 됩니다.사용자가 여는 모든 언어의 모든 프로젝트에 적용 됩니다.

.NET Framework 내 코드만

사용자와 비 사용자 코드**|Stepping behavior|Breakpoint behavior|**예외 동작

사용자와 비 사용자 코드

사용자 코드에서 디버거용 코드를 구분하기 위해 열려 있는 프로젝트, 기호 (.pdb) 파일 및 프로그램 최적화에 내 코드만 기능합니다.

  1. 이진 파일을 열려 있는 Visual Studio 프로젝트에서 빌드된 경우 사용자 코드가 항상 간주됩니다.

  2. 디버거에서 코드를 최적화된 바이너리 또는.pdb 파일을 사용할 수 없을 때 사용자 코드가 아닌 것으로 간주합니다.

3개의 특성 디버거에서는 내 코드로 간주에 영향을 줍니다.

다른 모든 코드를 사용자 코드로 간주 됩니다.

단계별 실행 동작

비 사용자 코드의 단계 (단축키: F11)에 있을 때, 디버거용 코드를 다음 문으로 사용자 코드 디버거 단계입니다. 이 나가기 (키보드: Shift + F11)일때,, 디버거는 사용자 코드의 다음 줄으로 실행합니다. 사용자 코드가 발견되면 응용 프로그램까지 실행이 계속 사라지는 중단점에 또는 예외가 발생 합니다.

중단점 동작

내 코드만 사용할 때, 모두 중단 (키보드: Ctrl + Alt + Break) 를 선택할 수 있고 사용자 코드를 표시하는 위치에서 실행을 멈출 수 있습니다. 이 경우 없음 원본 창이 표시 됩니다. 단계 명령을 선택하면 디버거는 사용자 코드의 다음 줄으로 이동 합니다.

예외 동작

디버거용 코드에서 처리 되지 않은 예외가 발생하면 예외가 생성 되는 사용자 코드에 디버거 줄에서 중단합니다.

첫 번째 예외는 예외에 대한 활성화 되어 있으면 사용자 코드선 녹색으로 강조 표시 됩니다. 호출 스택은 [외부 코드] 로 이름 붙여진 주석된 프레임을 표시합니다.

C++ 코드만 사용

사용자와 비 사용자 코드**|Stepping behavior|Exception behavior|사용자 지정 동작을 단계별로|**호출 스택의 동작 사용자 지정

사용자와 비 사용자 코드

내 코드만 c++은 스테핑 동작 호출 스택의 동작의 독립적 이기 때문에 내 코드만 JavaScript 및.NET Framework 다릅니다.

호출 스택

기본적으로 디버거-사용자 코드로 호출 스택 창에서이 함수를 간주 합니다.

  • 기호 파일에 원본 훼손된 정보로 작동 합니다.

  • 함수에 기호 파일이 있음을 나타내는데 스택 프레임에 해당하는 소스 파일이 없습니다.

  • 이 %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers 폴더의 *.natjmc 파일들을 지정하는 함수입니다.

단계별 실행

기본적으로, 비 사용자 코드를 고려한 %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers 폴더의 *.natstepfilter 파일들을 지정한 오직 함수들 입니다.

이 %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers 의 호출 시특 윈도우와 스테핑한 지정의 .natjmc 과 자신의 .natstepfilter 을 만들 수 있습니다.

단계별 실행 동작

사용자 코드로 부터 비 사용자 단계에 (단축키: F11)일 때, 디버거는 사용자 코드의 다음 라인의 코드를 통해 나아갑니다. 이 나가기 (키보드: Shift + F11)일때,, 디버거는 사용자 코드의 다음 줄으로 실행합니다. 사용자 코드가 발견되면 응용 프로그램까지 실행이 계속 사라지는 중단점에 또는 예외가 발생 합니다.

디버거용 코드에서 디버거가 중단되면 (예를 들어, 모두 중단 명령 디버거용 코드에서 중지 된 경우) 사용자가 아닌 코드에서 계속 스테핑합니다.

예외 동작

디버거가 예외를 적중, 사용자 또는 사용자가 아닌 코드에 관계없이 예외에서 중지 됩니다. 이 예외사용자가 처리 하지 않음 옵션에 대화 상자가 무시 됩니다.

단계별 실행 동작 사용자 지정

이 *.natstepfilter 파일의 비 사용자 코드를 목록화 함으로써 단계로 나아가는 함수를 지정할 수 있습니다.

  • Visual Studio 컴퓨터의 모든 사용자에 대해 사용자가 아닌 코드를 지정 하려면 %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers 폴더의 .natstepfilter 파일을 추가합니다.

  • 사용자 코드가 아닌 개별 사용자를 지정 하려면 %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers 폴더의 .natstepfilter 파일을 추가합니다.

.natstepfilter 파일은 다음이 구문 사용하여 xml 파일:

<?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>

요소

설명

Function

필수적 요소로서, 비-사용자 함수처럼 하나 이상의 함수를 지정합니다.

Name

필수적 요소로서, ECMA 262 서식이 지정된 전체 함수 이름과 일치하는 정규식. 예를 들면 다음과 같습니다.

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

디버거가 모든 메서드에 MyNS::MyClass 는 사용자 코드가 아닌 것으로 간주 됩니다. 비일치 여부를 확인할 때 대/소문자는 구분되지 않습니다.

Module

선택적 요소로서, ECMA 262 포맷 함수가 들어있는 모듈의 전체 경로 지정하는 정규식입니다. 일치 여부를 확인할 때 대/소문자는 구분되지 않습니다.

Action

필수적 요소로서, 이러한 값은 대/소문자를 구분하지 않습니다:

  • NoStepInto-일치 하는 함수를 통해 실행 되도록 디버거에 지시합니다.

  • StepInto- NoStepInto 일치하는 함수에 대해, 디버거가 다른 재정의 일치하는 함수를 한 단계씩 나아가는 것을 말합니다.

호출 스택의 동작 사용자 지정

모듈, 소스 파일 및 디버거용 코드의 호출 스택에 *.natjmc 파일을 지정하여 처리하는 함수를 지정할 수 있습니다.

  • Visual Studio 컴퓨터의 모든 사용자에 대해 사용자가 아닌 코드를 지정 하려면 %VsInstallDirectory%\Common7\Packages\Debugger\Visualizers 폴더의 .natjmc 파일을 추가합니다.

  • 사용자 코드가 아닌 개별 사용자를 지정 하려면 %USERPROFILE%\My Documents\Visual Studio 2013\Visualizers 폴더의 .natjmc 파일을 추가합니다.

.natjmc 파일은 다음이 구문 사용하여 xml 파일:

<?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>

모듈 요소 특성

특성

설명

Name

필수적 요소로서, 모듈의 전체 경로입니다. 이 ? (0 개 이상의 문자)와 * (0 개 이상의 문자)인 Windows 와일드 카드 문자를 사용할 수 있습니다. 예를 들면 다음과 같습니다.

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

외부 코드로써 모든 드라이버의 \3rdParty\UtilLibs 모둘을 다루는 디버거를 말합니다.

Company

선택적 요소로서, 실행 파일에 포함된 모듈을 게시하는 회사의 이름입니다. 모듈을 구별하기 위해이 특성을 사용할 수 있습니다.

파일 요소 특성

특성

설명

Name

필수적 요소로서, 외부 코드를 처리하는 소스 파일의 전체 경로입니다. 경로를 지정할 때, ? 과 * Windows 와일드 카드 문자를 사용할 수 있습니다.

함수 요소 특성

특성

설명

Name

필수적 요소로서, 외부 코드를 처리하는 함수의 정규화된 이름입니다.

Module

선택적 요소로서, 이름 또는 함수가 포함된 모듈에 대한 전체 경로입니다. 이 특성은 같은 이름 가진 함수를 사용할 수 있습니다.

ExceptionImplementation

이 true 로 설정된 경우, 호출 스택에 표시 함수가이 함수 대신 함수에서 예외가 발생 했습니다.

JavaScript 코드만 사용

사용자와 비 사용자 코드**|Stepping behavior|Breakpoint behavior|Exception behavior|**내 코드만 사용자 지정

사용자와 비 사용자 코드

코드 분류

내 코드만 JavaScript 코드가 이러한 분류 중 하나로 분류하여 단계별 실행 및 호출 스택 표시를 제어 합니다.

MyCode

소유하고 제어하는 사용자 코드입니다.

LibraryCode

정기적으로 사용하는 라이브러리 및 응용 프로그램에서 비-사용자 코드 제대로 (예: WinJS 또는 jQuery) 작동하는 데 사용합니다.

UnrelatedCode

비-사용자 코드를 응용 프로그램에서 실행될 수 있고 응용 프로그램이 제대로 (예를 들어, 광고를 표시 하는 광고 SDK) 함수를 직접 사용하지 않는 합니다. Windows 저장소 프로젝트에서 HTTP 또는 HTTPS URI에서 응용 프로그램에 로드되는 코드 UnrelatedCode는 또한 간주 됩니다.

JavaScript 디버거는 자동으로 이러한 유형의 코드를 분류합니다.

  • MyCode로 분류된 eval 함수가 호스트에서 제공하는 문자열을 전달하여 실행 되는 스크립트 입니다.

  • LibraryCode로 분류된 Function 생성자로 문자열을 전달하는 실행하는 스크립트입니다.

  • WinJS 또는 Azure SDK 등 프레임 워크의 참조에 포함 된 스크립트 파일로 LibraryCode로써 분류됩니다.

  • 이 setTimeout, setImmediate, 혹은 UnrelatedCode 로 정의된 setInterval 함수의 문자열로 전달을 실행하는 스크립트 입니다.

  • 이 %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json 모든 JavaScript를 Visual Studio 프로젝트에 대해 다른 사용자와 비 사용자 코드를 지정 합니다.

프로젝트의 루트 폴더에 있는 mycode.json 의 url로 명명 된 .json 파일을 추가하고 기본 분류를 수정하고 특정 파일을 분류할 수 있습니다.

모든 다른 코드는 MyCode로써 정의되었습니다.

단계별 실행 동작

  • 함수는 사용자(MyCode)코드인 경우, Step Into (단축키: F11)는 프로시저 단위 (키보드: F10)로 행동합니다.

  • 만약 비 사용자(LibraryCode 또는 UnrelatedCode) 코드가 시작하는 경우, 일시적으로 스테핑 작동 내 코드만 사용할 수 없습니다. 내 코드만 사용자 코드를 실행하는 즉시 스테핑를 다시 사용할 수 있습니다.

  • 한 단계 (예: 이벤트 처리기의 마지막 줄에 단계를 수행하는) 현재 실행 컨텍스트 내에서 사용자 코드 결과 사용자 코드가 실행된 다음 줄에서 디버거가 중지 됩니다. 예를 들어, 콜백이 LibraryCode 코드 디버거 에서 실행하는 경우 사용자 코드의 다음 줄이 실행 될 때까지 계속 합니다.

  • 프로시저 나가기 (키보드: Shift + F11) 사용자 코드의 다음 줄에서 중지 됩니다. 사용자 코드가 발견되면 응용 프로그램까지 실행이 계속 사라지는 중단점에 또는 예외가 발생 합니다.

중단점 동작

  • 코드의 분류에 관계없이 코드에 설정한 중단점 적중 항상 됩니다.

  • 이 debugger 키워드에서 발생하는 경우:

    • LibraryCode 코드가, 항상 실행이 중단 됩니다.

    • UnrelatedCode 코드에서 디버거가 중지되지 않습니다.

예외 동작

만약 처리되지 않은 예외가 발생하는 경우:

  • MyCode 또는 LibraryCode 코드는, 항상 실행이 중단됩니다.

  • UnrelatedCode 코드와 MyCode 또는 LibraryCode 코드는 호출 스택에 디버거가 중단 됩니다.

첫 번째 예외가 예외 대화 상자에서 예외에 대한 사용되고 예외가 LibraryCode 또는 UnrelatedCode 코드에서 throw 됩니다.

  • 예외 처리는 디버거가 중단 되지 않습니다.

  • 예외가 처리되지 않으면 디버거가 중단 됩니다.

사용자 지정 내 코드만 사용

단일 Visual Studio 프로젝트를 위한 사용자와 비 사용자의 분류하는 것은, 프로젝트의 루트 폴더에 mycode.json 로 파일 이름이 .json으로 추가되었습니다.

분류는 이 순서로 수행됩니다.

  1. 기본 분류

  2. 이 %VSInstallDirectory%\JavaScript\JustMyCode\mycode.default.wwa.json 파일을 분류합니다.

  3. 이 mycode. json 파일은 현재 프로젝트를 분류합니다.

각 분류 단계는 이전 단계를 무시합니다. 모든 키 값 쌍을 나열 하지 않아도 .json 파일 및 MyCode, 라이브러리, 및 Unrelated 값이 빈 배열이 될 수 있습니다.

내 코드 .json 파일 다음이 구문을 사용 합니다.

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

Eval, 함수와 ScriptBlock

Eval, 함수, 및 ScriptBlock 는 키 값 쌍 방법을 동적으로 결정 생성된 코드 분류 됩니다.

Eval

스크립트 호스트에서 제공하는 문자열을 전달하여 실행되는 eval 함수입니다. 기본적으로, 스크립트 Eval로 MyCode로써 분류되지 않았다.

Function

문자열을 전달하여 실행되는 스크립트는 Function 생성자입니다. 기본적으로, 함수 스크립트는 LibraryCode로 분류 됩니다..

ScriptBlock

이 setTimeout, setImmediate 혹은 setInterval 함수들은 문자를 전달함으로써 실행하는 스크립트 입니다. 기본적으로 ScriptBlock 스크립트 UnrelatedCode로 분류 됩니다..

이러한 키워드 중 하나에 값을 변경할 수 있습니다.

  • MyCode 스크립트를 MyCode로 분류합니다.

  • Library 는 스크립트를 LibraryCode로 분류합니다.

  • Unrelated 는 스크립트를 UnrelatedCode로 분류합니다.

MyCode, 라이브러리, Unrelated

MyCode, 라이브러리, 및 Unrelated 키 값은 분류에 포함 시킬 파일의 url을 지정을 짝지어 줍니다.

MyCode

MyCode으로 분류 된 파일 또는 url 배열입니다.

라이브러리

LibraryCode으로 분류 된 파일 또는 url 배열입니다.

Unrelated

UnrelatedCode으로 분류 된 파일 또는 url 배열입니다.

url 혹은 파일 문자열은 0 혹은 더 이상의 문자를 일치하여, * 문자들을 하나 혹은 더 모을 수 있습니다. * 는 정규 표현식 .* 에 해당하는 것입니다.