지원되는 코드 변경(C#)
이 항목은 다음 언어에 적용됩니다.
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro, Premium 및 Ultimate |
편집하며 계속하기에서는 메서드 본문 내의 코드 변경 형식 대부분을 처리합니다. 그러나 메서드 본문 바깥의 변경 내용 대부분과 메서드 본문 내의 일부 변경 내용은 디버깅 과정에서 적용할 수 없습니다. 이와 같이 지원되지 않는 변경 내용을 적용하려면 디버깅을 중지하고 새 버전의 코드를 사용하여 다시 시작해야 합니다.
디버깅 세션 중에 C# 코드에 적용할 수 없는 변경 내용은 다음과 같습니다.
현재 문 또는 다른 모든 활성 문에 대한 변경
활성 문에는 호출 스택의 함수에서 현재 문을 실행하기 위해 호출된 모든 문이 포함됩니다.
현재 문은 소스 창에서 노란색 배경으로 표시됩니다. 다른 활성 문은 배경이 회색으로 표시되고 이러한 문은 읽기 전용입니다. 이와 같은 기본 색상은 옵션 대화 상자에서 변경할 수 있습니다.
다음을 비롯한 전역 기호에 대한 변경
새 형식 추가
형식에 메서드 추가
형식의 시그니처 변경
형식에 필드, 이벤트 또는 속성 추가
무명 메서드 또는 무명 메서드가 포함된 메서드 편집. 이러한 메서드는 배경이 회색으로 표시됩니다.
새 무명 메서드 추가
속성 추가, 제거 또는 변경
using 지시문 추가, 제거 또는 변경
지역 변수 제거 또는 변경. 지역 변수 추가는 허용됩니다.
활성 문 주위에 foreach, using 또는 lock 추가
yield return 또는 yield break 문이 포함된 메서드 수정
무명 메서드를 사용하여 초기화된 필드로 생성자 변경
안전하지 않은 코드
안전하지 않은 코드에 대한 변경에는 안전한 코드에 대한 변경과 동일한 제한 사항이 적용되고 한 가지 제한 사항이 추가로 더 적용됩니다.
- stackalloc 연산자가 포함된 메서드 안에 있는 안전하지 않은 코드에 대한 변경은 편집하며 계속하기에서 지원하지 않습니다. 이는 활성 메서드에만 적용됩니다. 디버깅할 때 현재 호출 스택에 있는 모든 함수가 활성 함수입니다.
예외
편집하며 계속하기에서는 catch, finally, 및 try 블록에 대한 변경을 지원하지만 현재 호출 스택에 있는 메서드 같은 활성 메서드의 블록에 대해서는 몇 가지 예외가 있습니다.
호출 스택에 있는 가장 최근의 함수인 활성 함수에 대해 편집하며 계속하기는 다음 작업을 지원하지 않습니다.
활성 문 주위에 catch 또는 finally 블록 추가
여섯 단계 이상으로 중첩된 수준의 예외 처리기 추가
호출 스택에 있는 가장 최근의 함수가 아닌 활성 함수에 대해 편집하며 계속하기는 다음 작업을 지원하지 않습니다.
활성 문 주위에 catch, finally 또는 try 블록 추가
여섯 단계 이상으로 중첩된 수준의 예외 처리기 추가
활성 문이 포함된 try 블록 내의 코드 변경
지원되지 않는 시나리오
다음과 같은 디버깅 시나리오에서는 편집하며 계속하기를 사용할 수 없습니다.
LINQ 코드 디버깅. 자세한 내용은 LINQ에서 편집하며 계속하기을 참조하십시오.
혼합 모드(네이티브/관리) 디버깅
SQL 디버깅
Dr. Watson 덤프 디버깅
"처리되지 않은 예외에 대한 호출 스택 해제" 옵션을 선택하지 않은 상태에서 처리되지 않은 예외가 발생한 후에 코드 편집
포함된 런타임 응용 프로그램 디버깅
디버그 메뉴에서 시작을 선택하여 응용 프로그램을 실행하는 대신 연결 대상을 사용하여 응용 프로그램 디버깅
최적화된 코드 디버깅
대상이 64비트 응용 프로그램인 경우 관리 코드 디버깅. 편집하며 계속하기를 사용하려면 대상을 x86으로 설정해야 합니다. (고급 컴파일러 설정, 컴파일 탭, 프로젝트 속성)
빌드 오류가 발생하여 새 버전을 빌드하는데 실패한 후 이전 버전의 코드 디버깅