Visual Studio 디버거 시작, 중단, 탐색 및 중지
항목 내용
항목 내용
디버깅 시작
프로세스에 연결
디버거에서 응용 프로그램을 자동으로 시작
디버그 세션에서 코드 탐색
코드를 중단점 또는 모두 중단 하 여 중단
으로 또는 코드를 실행 합니다.
지정 된 위치 또는 함수를 실행 합니다.
실행한 다음 문을 설정 합니다.
내 코드만 한 단계씩 실행을 제한 합니다.
시스템 호출 내부로 스텝
관리 코드의 속성 및 연산자를 한 단계씩
디버깅 중지
디버깅 시작
솔루션을 열 때 Visual Studio 디버깅을 시작 하는 세 가지 선택 사항이 있습니다.
선택 디버깅, 디버깅 시작 (키보드: F5). |
응용 프로그램은 시작 되 고 때까지 다음 실행:
|
선택 디버깅, 단계에 (키보드: F11) 또는 디버깅, 단계 위에 (키보드: F10). |
응용 프로그램 시작 및 다음 첫째 줄에서 중단 합니다. |
소스 창에서 실행 코드 줄을 선택 하 고 선택 커서까지 실행 상황에 맞는 메뉴입니다. |
응용 프로그램이 시작 되 고 중단점 또는 커서 위치까지 실행을, 둘 중 먼저 제공 됩니다. |
프로세스에 연결
디버거는 Visual Studio 외부 프로세스에서 실행 되는 프로그램에 연결할 수도 있습니다.프로그램에 연결 되 면 디버거 실행 명령을 사용 하 여, 프로그램 상태를 검사 하 고 등 수 있습니다.프로그램을 검사 하는 기능을 프로그램이 빌드될 때 디버그 정보가 사용 여부 및 프로그램의 소스 코드에 액세스할 수 있는지 여부 및 공용 언어 런타임 JIT 컴파일러가 디버그 정보를 추적 하 고 여부에 따라 제한 될 수 있습니다.
로컬 컴퓨터에서 실행 되는 프로세스에 연결
선택 디버깅, 프로세스에 연결.에 프로세스에 연결 대화 상자에서 프로세스를 선택 하는 사용 가능한 프로세스 선택한 다음 선택 연결.
자세한 내용은 실행 중인 프로세스에 연결를 참조하십시오.
디버거에서 응용 프로그램을 자동으로 시작
때로는 다른 프로세스에서 시작한 응용 프로그램의 시작 코드를 디버깅해야 할 수도 있습니다.서비스 및 사용자 지정 설치 작업을 예로 들 수 있습니다.이러한 시나리오에서는 응용 프로그램을 시작할 때 디버거를 시작하고 자동으로 연결할 수 있습니다.
레지스트리 편집기를 시작 (regedit.exe).
이동은 를 NT\CurrentVersion\Image 파일 실행 옵션 폴더입니다.
디버거를 시작 하려면 응용 프로그램의 폴더를 선택 합니다.
응용 프로그램 이름을 하위 폴더에 없으면 선택 이미지 파일 실행 옵션 다음 선택 새, 키 바로 가기 메뉴.새 키를 선택 하 고 선택한 이름 바꾸기 바로 가기 메뉴에서 다음 응용 프로그램의 이름을 입력 합니다.
응용 프로그램 폴더의 바로 가기 메뉴에서 선택 New, 문자열 값.
새 값의 이름을 변경 New Value 에 디버거.
Debugger 항목의 바로 가기 메뉴에서 선택 수정.
문자열 편집 대화 상자에서 입력 vsjitdebugger.exe 에 있는 값 데이터 상자.
항목 내용
디버그 세션에서 코드 탐색
코드를 중단점 또는 모두 중단 하 여 중단
Visual Studio 디버거를 응용 프로그램을 디버깅 하는 경우 응용 프로그램은 실행 중이거나 중단 모드로 설정 되어 있습니다.
디버거는 실행이 중단점에 도달 하거나 예외가 발생 하면 응용 프로그램의 실행을 중단 합니다.또한 언제 든 지 수동으로 실행을 중단할 수 있습니다.
중단점은 특정 지점에서 응용 프로그램의 실행을 일시적으로 중단 하도록 디버거에 알려 주는 신호입니다.프로그램 실행이 중단점에서 중단되면 프로그램은 중단 모드에 있는 것입니다.중단 모드가 시작되어도 프로그램 실행이 중지되거나 종료되지는 않으며, 언제라도 실행을 다시 시작할 수 있습니다.
지역 창에서 변수 값을 볼 또는 조사식 창에서 식을 계산 하는 같은 대부분의 디버거 기능은 중단 모드 에서만 사용할 수 있습니다.응용 프로그램의 모든 요소를 유지 (함수, 변수 및 개체가 메모리에 유지, 예를 들어), 있지만 그 동작과 작업은 일시 중단 됩니다.중단 모드에서는 요소의 위치와 상태를 검사하여 위반이나 버그를 찾아낼 수 있습니다.또한 중단 모드에서 응용 프로그램을 조정할 수 있습니다.
조건에 따라 실행을 일시 중단 하면 중단점을 구성할 수 있습니다.자세한 내용은 중단점 및 추적점 사용를 참조하십시오.이 단원에서는 코드를 중단 하는 두 가지 기본적인 방법을 설명 합니다.
코드에서 중단점을 설정
코드에서 간단한 중단점을 설정 하려면 Visual Studio 편집기에서 원본 파일을 엽니다.원하는 번호를 중단 하 고 다음을 선택 하는 코드 줄에 커서를 설정 중단점, 중단점 삽입 상황에 맞는 메뉴 (키보드: F9.줄이 실행 되기 전에 디버거 실행 오른쪽 중단 됩니다.
중단점을 Visual Studio 다양 한 조건부 중단점 및 추적점은 같은 추가 기능을 제공합니다.자세한 내용은 중단점 및 추적점 사용를 참조하십시오.
코드를 수동으로 중단
코드는 실행 중인 응용 프로그램에서 사용할 수 있는 다음 줄으로 분리 하려면 디버깅, 모두 중단 (키보드: Ctrl+Alt+Break).
내 코드만 옵션을 사용으로 디버깅 하는 경우 프로젝트의 코드의 다음 줄에서 중단 합니다.자세한 내용은 Restrict stepping to Just My Code를 참조하십시오.
여러 프로그램을 디버깅하는 경우 중단점 또는 모두 중단 명령은 기본적으로 디버깅 중인 모든 프로그램에 적용됩니다.볼 Change the break behavior of multiple processes 이 항목.
사용 중단에 해당 하는 소스가 없는 코드를 실행 하는 동안 또는 기호 (.pdf) 파일 경우) 디버거 표시는 소스 파일을 찾을 또는 기호를 찾을 수 없습니다 페이지 수 있도록 해당 파일을 찾을.자세한 내용은 기호 파일(.pdb), 소스 파일 및 이진 파일 찾기를 참조하십시오.
지원 파일을 액세스할 수 없는 경우에 디스어셈블리 창에서 어셈블리 명령을 디버깅할 수 있습니다.
으로 또는 코드를 실행 합니다.
가장 일반적인 디버깅 절차 중 하나는 단계별 실행입니다.단계별 실행은 한 번에 한 줄씩 코드를 실행합니다.디버거 중단점까지 실행 등의 실행을 중지 한 경우 3을 사용할 수 있습니다 디버깅 메뉴 명령의 코드를 단계별로 실행 합니다.
메뉴 명령 |
바로 가기 키 |
설명 |
---|---|---|
한 단계씩 코드 실행 |
F11 |
코드 줄에 함수 호출이 포함되어 있는 경우 한 단계씩 코드 실행은 호출 자체만 실행한 다음 함수 안에 있는 코드의 첫째 줄에서 중단합니다.그렇지 않으면 단계에 다음 문을 실행 합니다. |
프로시저 단위 실행 |
F10 |
줄에 함수 호출이 포함 되어 있는 경우 단계 위에 호출된 된 함수를 실행 한 다음 호출 하는 함수 내에서 코드의 첫째 줄에서 중단 합니다.그렇지 않으면 단계에 다음 문을 실행 합니다. |
프로시저 나가기 |
Shift+F11 |
프로시저 나가기는 함수가 반환될 때까지 코드 실행을 계속한 다음 호출 함수의 반환점에서 중단합니다. |
중첩된 함수 호출인 경우 한 단계씩 코드 실행 명령은 가장 안쪽에 중첩된 함수를 한 단계씩 실행합니다.Func1(Func2())와 같은 호출에 한 단계씩 코드 실행을 사용하면 디버거에서 함수 Func2를 한 단계씩 실행합니다.
디버거는 실제로 코드 문을 통하지 않고 실제 선 안내합니다.예를 들어는 if 절을 한 줄에 작성할 수 있습니다.
int x = 42; string s = "Not answered"; if( int x == 42) s = "Answered!";
Dim x As Integet = 42 Dim s As String = "Not answered" If x = 42 Then s = "Answered!"
이 줄에 가더라도 디버거 조건이 한 단계 및 영향력으로 다른 취급 (이 예제에서는 조건이 true 되어) 있습니다.
지정 된 위치 또는 함수를 실행 합니다.
특정 지점에서 코드를 실행 하 고 다음 실행을 중단 해야 할 경우도 있습니다.중단 하려는 위치에 중단점을 설정한 경우 선택 디버깅, 디버깅 시작 디버깅을 시작 하지 않은 경우, 또는 디버깅, 계속.(두 경우 모두 F5 바로 가기 키).디버거가 다음 중단점에서 코드 실행을 중지합니다.선택 디버깅, 계속 원하는 중단점에 도달할 때까지.볼 Set breakpoints in the code 이 항목.
위치를 커서를 코드 편집기에 놓은에 실행 하거나 지정한 함수까지 실행할 수도 있습니다.
커서 위치까지 실행
커서 위치까지 실행 하는 실행 코드 줄에 소스 창에서에서 커서를 놓습니다.편집기의 컨텍스트 메뉴에서 선택 커서까지 실행.
호출 스택에 있는 함수를 실행
에 호출 스택 함수를 선택 하 고 선택 하는 창에서 커서까지 실행 상황에 맞는 메뉴에서.
이름으로 지정 된 함수 실행
지정한 함수에 도달할 때까지 응용 프로그램을 실행하도록 디버거에 명령할 수 있습니다.함수를 이름으로 지정 하거나 호출 스택에서 선택할 수 있습니다.
함수 이름을 지정 하려면 선택 디버깅, 새 중단점, 함수에서 중단, 다음 함수 이름과 기타 식별 정보를 입력 합니다.
함수 오버 로드 되었거나 여러 네임 스페이스에 있는 경우 원하는 함수를 선택할 수 있습니다는 중단점 선택 대화 상자.
실행한 다음 문을 설정 합니다.
디버거를 중단 하 고 나면 다음에 실행할 코드의 문으로 실행 위치를 이동할 수 있습니다.소스 또는 디스어셈블리 창의 여백에 있는 노란색 화살표는 다음에 실행할 문의 위치를 나타냅니다.코드의 일부를 건너뛰거나 이전에 실행한 줄로 돌아가려면 이 화살표를 이동합니다.알려진 버그를 포함하는 코드 섹션을 건너뛰려는 경우 등에 이 방법을 사용할 수 있습니다.
다음 실행할 문을 설정 하려면, 이러한 절차 중 하나를 사용 하십시오.
소스 창에서 노란색 화살표 같은 소스 파일에서 다음 문을 설정할 하려는 위치로 드래그
소스 창에서 다음을 실행 하 고 선택 하려는 줄에 커서를 설정 다음 문 설정 상황에 맞는 메뉴입니다.
디스어셈블리 창에서 커서를 선택 하 고 다음에 실행할 어셈블리 명령에서 설정 다음 문 설정 상황에 맞는 메뉴입니다.
주의 |
---|
다음 문을 설정하면 프로그램 카운터가 새 위치로 바로 이동하게 됩니다.이 명령은 주의해서 사용해야 합니다.
|
[!참고]
관리 코드의 경우 다음과 같은 조건에서는 다음 문을 이동할 수 없습니다.
다음 문이 현재 문과 다른 메서드에 있는 경우
Just-In-Time 디버깅을 사용하여 디버깅을 시작한 경우
호출 스택 해제를 진행 중인 경우
System.StackOverflowException 또는 System.Threading.ThreadAbortException 예외가 throw된 경우
응용 프로그램을 실행하는 동안에는 다음 문을 설정할 수 없습니다.다음에 실행할 문을 설정하려면 디버거가 중단 모드에 있어야 합니다.
내 코드만 한 단계씩 실행을 제한 합니다.
디버깅하는 동안 사용자가 작성한 코드만 확인하고 시스템 호출 등의 다른 코드는 무시할 수 있습니다.이렇게 하려면 내 코드만 디버깅 옵션을 사용합니다.내 코드만 옵션을 사용하면 사용자가 작성하지 않은 코드는 디버거 창에 표시되지 않도록 숨겨집니다.단계별로 실행할 때 디버거에서는 사용자가 작성하지 않은 코드도 실행하지만 이 단계에서는 실행을 중단하지 않습니다.
내 코드만 디버깅을 사용할지를 선택 디버깅, 옵션 및 설정.에 디버깅, 일반 페이지, 확인 또는 취소 내 코드만 사용.
사용자 코드에서 디버거용 코드를 구별 하려면 내 코드만 심볼 (PDB) 파일 및 프로그램 최적화에 찾습니다.
표준 디버그 빌드에서는 최적화가 해제되고 모든 모듈에 대해 디버그 기호가 만들어집니다.사용자가 디버그 빌드를 실행할 때 이러한 모듈은 사용자 코드로 간주됩니다.그러나 최적화 되어 있고 디버그 기호가 없는 라이브러리 함수는 사용자 코드로 간주 되지 않습니다.내 코드만 기능을 사용하면 라이브러리 코드의 중단점에서는 실행이 중단되지 않습니다. 일반적으로 라이브러리 코드는 디버깅 대상이 아닙니다.중단점 창에서 이러한 중단점은 해제된 중단점 아이콘으로 표시됩니다.
모든 모든 중단점에서 중지 하 고 코드를 확인 하려면 내 코드만 사용 하 여 디버깅을 해제 해제할 수 있습니다는 옵션 대화 상자.
디버거에서 내 코드로 간주할 코드를 결정하는 세 가지 특성도 있습니다. DebuggerNonUserCodeAttribute가 적용된 코드는 디버거에서 내 코드가 아닌 것으로 간주됩니다.DebuggerHiddenAttribute가 적용된 코드는 내 코드만 옵션을 해제했더라도 디버거에서 숨겨집니다.DebuggerStepThroughAttribute가 적용된 코드는 디버거에서 한 단계씩 실행되지 않고 단계별로 실행됩니다.
내 코드만 사용 하는 경우 선택할 수 있습니다 모두 중단 에 있는 디버깅 에서 실행을 중지 하 고 메뉴 표시할 내 코드가 없는 위치.이 경우 어떠한 코드도 표시되지 않습니다.또한 단계 명령을 선택하여 다음에 나오는 "내 코드" 줄로 이동할 수 있습니다.
Visual Basic Stop 문 같은 프로그래밍 방식의 중단 문은 다르게 처리됩니다.내 코드만 옵션을 사용하는 경우에도 이러한 문에서 항상 실행이 중단됩니다.이 경우 사용자가 작성하지 않은 코드가 숨겨지지 않고 표시되지만 실행 위치는 사용자가 작성하지 않은 코드에서 벗어나 다음에 나오는 "내 코드" 줄까지 단계별로 진행됩니다.
[!참고]
장치 프로젝트에 대해서는 내 코드만 옵션이 지원되지 않습니다.
시스템 호출 내부로 스텝
모든 다른 통화와 마찬가지로 시스템 코드에 대 한 디버깅 기호를 로드 하 고 내 코드만 사용 안 함 경우에 시스템 호출을 실행할 수 있습니다.
내 코드만 해제 하는 방법에 알아 보려면 참조 하십시오.Restrict stepping to Just My Code
Microsoft 기호 파일에 액세스 하려면 참조 하십시오 Windows 및 기타 Microsoft 기호 사용 에 있는 기호 파일(.pdb), 소스 파일 및 이진 파일 찾기 항목.
디버깅 하는 동안 특정 시스템 구성 요소에 대 한 기호를 로드 하려면:
모듈 창을 엽니다 (키보드: Ctrl+Alt+U).
기호를 로드 하려면 원하는 모듈을 선택 합니다.
기호 상태 열을 보면 기호가 로드된 모듈을 확인할 수 있습니다.
선택 기호 로드 상황에 맞는 메뉴입니다.
관리 코드의 속성 및 연산자를 한 단계씩
기본적으로 관리 코드의 속성 및 연산자를 통해 디버거 단계입니다.대부분의 경우이 통해 디버깅 환경이 제공합니다.속성이 나 연산자를 한 단계씩 실행을 사용 하려면 디버깅, 옵션 및 설정.에 디버깅, 일반 페이지 지우기는 속성 및 연산자 건너뛰기 (관리에만 해당) 확인란
항목 내용
디버깅 중지
디버깅을 중지하면 디버깅 세션이 종료됩니다.실행을 중지하면 디버깅하고 있는 프로세스가 종료되고 디버깅 세션이 끝납니다.디버깅 세션이 활성인 상태에서 일시적으로 디버깅 중인 프로세스의 실행을 멈추는 실행 중단과 실행 중지를 혼동하지 마십시오.프로세스에서 분리 해도 프로세스 디버깅을 중지 하지만 계속 실행 됩니다.
Visual Studio 디버깅을 중지 합니다.
선택 디버깅, 디버깅 중지.
디버깅 중지 Visual Studio 프로그램을 시작한 경우 디버깅 중인 프로세스를 종료 합니다.Visual Studio 시작 하지 말고 프로세스에 연결 하는 경우 프로세스는 계속 실행이 됩니다.
디버깅을 중지 하 고 다시 시작
선택 디버깅, 다시 현재 디버깅 세션을 중지 하 고 시작 프로젝트에서 디버거를 다시 시작 합니다.
디버깅 중인 응용 프로그램을 닫습니다.
디버깅 되는 응용 프로그램을 종료 하면 디버깅이 자동으로 중지 됩니다.