본문으로 바로가기

이글의 제목을 뭘로 해야 하나 고민되는 내용이다.
소스수정(편집)하며 계속하기,소스수정(편집)하며 디버깅하기, 디버깅 중에 편집하기 정도로 명명될수 있겠다.

VB의 경우 디버깅주에 코드를 수정하면 수정된 내용을 곧바로 반영하면서 실행할 수 있다.
그런데 VC의 경우는 컴파일을 거치므로 코드를 수정하면서 바로 수정된 내용을 디버깅 할 수 없을거라 생각하고 기능을 사용하지 않는 개발자가 의뢰로 많다.
VC의 경우도 수정하면서 디버깅이 가능하다.

바로 apply code changes (Alt + F10) 기능이다
코드 디버깅 실행중에 내용을 수정한 다음, 컴파일 하지 않고 바로 변경된 내용을 적용하는 기능인데.
예를 들면 디버깅중에 특정위치에 Break를 설정하고, 해당 위치에서 오류를 발견하다음 수정해야 하는 상황이 발생했다.
이때 다시 컴파일 하지 않고 변경된 내용이 적용된 실행결과를 확인하고 싶으면  apply code changes (Alt + F10)를 사용하면 된다.
브레이크 위치에서 코드를 수정한후 해당 기능을 실행하면 수정된 코드가 바로 실행된다.

그럼 상용법을 알아보자


VC++ 6.0의 경우

프로젝트 설정
Link 페이지에서
Enable Incremental Linking(증분 링크 사용) : Yes 로 설정하고 디벙깅한다.



Visual C++(Visual Studio 2015)

현재 디버깅 세션 중에 적용하지 않으려는 코드 편집 내용이 있는 경우 편집하며 계속하기의 자동 호출을 사용하지 않도록 설정할 수 있습니다. 자동 편집하며 계속하기를 다시 사용하도록 설정할 수도 있습니다.

  1. 도구 메뉴에서 옵션을 선택합니다.
  2. 옵션 대화 상자에서 디버깅/일반을 선택합니다.
  3. 편집하며 계속하기 그룹에서 네이티브 편집하며 계속하기 사용 확인란을 선택하거나 선택 취소합니다.

이 설정을 변경하면 작업 중인 모든 프로젝트에 영향을 줍니다. 이 설정을 변경한 후 응용 프로그램을 다시 빌드할 필요는 없습니다. 이 설정은 디버깅 중에도 변경할 수 있습니다. 응용 프로그램을 명령줄이나 메이크파일에서 빌드하고 Visual Studio 환경에서 디버깅하는 경우에도 /ZI 옵션을 설정하면 편집하며 계속하기를 사용할 수 있습니다.

MSDN 참조 

Visual Studio 2017 에 대한 최신 설명서는 Visual Studio 2017 설명서를 참조하세요.

Visual C++ 프로젝트에서 편집하며 계속하기를 사용할 수 있습니다. 편집하며 계속하기의 제한에 대한 자세한 내용은 지원되는 코드 변경 및 제한(C++)을 참조하세요.

Visual Studio 2015 업데이트 1부터는 /bigobj 스위치로 /ZI 컴파일러 스위치를 지원하기 때문에 Windows 스토어 C++ 앱 및 DirectX 앱에서 편집하며 계속하기를 사용할 수 있습니다. /FASTLINK 스위치로 컴파일된 이진 파일을 이용하여 편집하며 계속하기를 사용할 수도 있습니다.

다른 업데이트 1 개선 사항으로는 취소할 수 있는 새로운 대기 대화 상자와, 파일에서 편집하며 계속하기를 지원하지 않는 경우 알리는 기능이 있습니다. 업데이트 1의 향상된 기능에 대한 자세한 내용은 Visual Studio 2015 업데이트 1의 C++ 편집하며 계속하기에 대한 기능 향상을 참조하세요.

Visual Studio 2013 업데이트 3에 소개된 /Zo(최적화된 디버깅 향상) 컴파일러 옵션은 /Od(비활성화(디버그)) 옵션 없이 컴파일된 이진 파일에 대한 추가 정보를 .pdb(기호) 파일에 추가합니다.

/Zo는 편집하며 계속하기를 사용하지 않도록 설정합니다. 방법: 최적화된 코드 디버깅를 참조하세요.

현재 디버깅 세션 중에 적용하지 않으려는 코드 편집 내용이 있는 경우 편집하며 계속하기의 자동 호출을 사용하지 않도록 설정할 수 있습니다. 자동 편집하며 계속하기를 다시 사용하도록 설정할 수도 있습니다.

  1. 도구 메뉴에서 옵션을 선택합니다.
  2. 옵션 대화 상자에서 디버깅/일반을 선택합니다.
  3. 편집하며 계속하기 그룹에서 네이티브 편집하며 계속하기 사용 확인란을 선택하거나 선택 취소합니다.

이 설정을 변경하면 작업 중인 모든 프로젝트에 영향을 줍니다. 이 설정을 변경한 후 응용 프로그램을 다시 빌드할 필요는 없습니다. 이 설정은 디버깅 중에도 변경할 수 있습니다. 응용 프로그램을 명령줄이나 메이크파일에서 빌드하고 Visual Studio 환경에서 디버깅하는 경우에도 /ZI 옵션을 설정하면 편집하며 계속하기를 사용할 수 있습니다.

Visual C++에서 편집하며 계속하기는 두 가지 방식으로 코드 변경 내용을 적용할 수 있습니다. 코드 변경 내용은 실행 명령을 선택할 때 암시적으로 적용하거나 코드 변경 내용 적용 명령을 사용하여 명시적으로 적용할 수 있습니다.

코드 변경 내용을 명시적으로 적용하면 프로그램이 중단 모드에 계속 남아 있고 실행되지 않습니다.

  • 코드 변경 내용을 명시적으로 적용하려면 디버그 메뉴에서 코드 변경 내용 적용을 선택합니다.

편집하며 계속하기에서 코드 변경 내용을 적용하는 동안 작업을 중지할 수 있습니다.

코드 변경 내용의 적용을 중지하려면

  • 디버그 메뉴에서 코드 변경 내용 적용 중지를 선택합니다.

이 메뉴 항목은 코드 변경 내용을 적용하는 동안에만 표시됩니다.

이 옵션을 선택하면 코드 변경 내용이 커밋되지 않습니다.

일부 코드를 변경하면 편집하며 계속하기에서 변경 내용을 적용할 때 실행 위치가 새로운 위치로 이동할 수 있습니다. 편집하며 계속하기에서는 실행 위치를 가능한 한 정확하게 지정하지만 결과가 올바르지 않은 경우도 있습니다.

Visual C++에서는 실행 위치가 변경되면 이를 알리는 대화 상자가 표시됩니다. 디버깅을 계속하기 전에 실행 위치가 올바른지 확인해야 합니다. 실행 위치가 올바르지 않으면 다음 문 설정 명령을 사용합니다. 자세한 내용은 다음에 실행할 문 설정을 참조하세요.

편집하며 계속하기로 실행 파일에 코드 변경 내용을 즉시 적용할 수 없는 경우도 있지만 디버깅을 계속할 경우 나중에 코드 변경 내용을 적용할 수 있습니다. 이는 현재 함수를 호출하는 함수를 편집하거나 호출 스택에 있는 함수에 64바이트 이상의 새 변수를 추가할 때 발생합니다.

이러한 경우 디버거는 변경 내용을 적용할 수 있을 때까지 원본 코드를 계속 실행합니다. 부실 코드는 별도의 소스 창에 enc25.tmp 같은 제목을 사용하여 임시 소스 파일 창으로 표시됩니다. 편집된 소스는 원본 소스 창에 계속 표시됩니다. 부실 코드를 편집하려고 하면 경고 메시지가 나타납니다.

 


C#

편집하며 계속하기를 자동으로 호출하려면

  1. 중단 모드에서 소스 코드를 변경합니다.
  2. 디버그 메뉴에서 계속단계 또는 다음 문 설정을 클릭하거나 디버거 창에서 함수를 실행합니다.

    새 코드가 컴파일되고 새 코드를 사용하여 디버깅이 계속 진행됩니다. 일부 변경 사항은 편집하며 계속하기에서 지원되지 않습니다. 자세한 내용은 지원되는 코드 변경(C#)을 참조하십시오.

편집하며 계속하기를 사용하거나 사용하지 않도록 설정하려면

  1. 도구 메뉴에서 옵션을 클릭합니다.
  2. 옵션 대화 상자에서 디버깅 노드를 확장하고 편집하며 계속하기를 선택합니다.
  3. 옵션 대화 상자의 편집하며 계속하기 페이지에서 편집하며 계속하기 사용 확인란을 선택하거나 선택 해제합니다.

    디버깅 세션을 다시 시작하면 설정 사항이 적용됩니다.