이전에 캡처되지 않았던 변수를 캡처하면 디버그 세션을 계속할 수 없습니다. C#에서 디버깅을 할 때 가끔 이런 오류 메시지를 보신 적이 있으실 겁니다. 디버깅 시 오류코드 ENC0048의 원인과 해결 방법에 대해 알아보도록 합시다.
이전에 캡처되지 않았던 변수를 캡처하면 디버그 세션을 계속할 수 없습니다.
[코드를 편집하며 디버그 계속하기]는 프로그램이 중단 모드에 있는 동안 소스 코드를 변경하여 리컴파일 시간을 절약하도록 제공합니다. 다만, 몇 가지 제한사항이 있는데 ENC0048 오류와도 관련이 있는 사항입니다.
편집하며 계속하기 기능을 사용하면 디버깅 세션을 중지하지 않고 진행하는 과정에서 코드를 변경할 수 있으나, 해당하는 변수는 디버깅 세션 이전에 캡처된 변수이기 때문에, 할당하려는 변수가 캡처 이후 추가되었다면, 해당 변수를 추후에 사용하거나 디버깅 세션을 다시 시작해야 하여 해결할 수 있습니다.
지원되지 않는 코드 변경
언어 요소 또는 기능 | 지원되지 않는 편집 작업 |
모든 코드 요소 | 이름 바꾸기 |
네임스페이스 | 추가 |
네임스페이스, 형식, 멤버 | 삭제 |
제네릭 | 추가 또는 수정 |
인터페이스 | 수정 |
유형 | 추상 또는 가상 멤버 추가, 재정의 추가 |
유형 | 소멸자 추가 |
멤버 | 포함된 interop 형식을 참조하는 멤버 수정 |
멤버 | 코드를 실행하여 이미 액세스한 후 정적 멤버 수정 |
멤버(Visual Basic) | On Error 또는 Resume 문을 사용하여 멤버 수정 |
멤버(Visual Basic) | Aggregate, Group By, Simple Join 또는 Group Join LINQ 쿼리 절이 포함된 멤버 수정 |
메서드 | 시그니처 수정 |
메서드 | 메서드 본문을 추가하여 추상 메서드가 비추상 메서드가 되도록 설정 |
메서드 | Delete 메서드 본문 |
특성 | 추가 또는 수정 |
이벤트 또는 속성 | 형식 매개 변수, 기본 형식, 대리자 형식 또는 반환 형식 수정 |
연산자 또는 인덱서 | 형식 매개 변수, 기본 형식, 대리자 형식 또는 반환 형식 수정 |
catch 블록 | 활성 문이 포함된 경우 수정 |
try-catch-finally 블록 | 활성 문이 포함된 경우 수정 |
using 문 | 추가 |
비동기 메서드/람다 | .NET Framework 4 이하를 대상으로 하는 프로젝트에서 비동기 메서드/람다 수정 |
반복기 | .NET Framework 4 이하를 대상으로 하는 프로젝트에서 반복기 수정 |