1. 앞으로 추가 정리할 내용 [Bottom] [Top]

2. Assert 함수 사용하기 [Bottom] [Top]

Visual C++ 에서는 다음과 같이 4가지 형태의 Assert 함수군를 제공한다.

2.1. CRT ASSERT 함수 활용 [Bottom] [Top]

2.2. Report 매크로 [Bottom] [Top]

C 런타임 라이브러리와 함께 제공된 매크로가 없지만 디버그 보고가 필요할 경우, 필요에 맞게 특별히 디자인된 매크로를 작성할 수 있다. 예를 들어, 헤더 파일 중 하나에서 다음과 같은 코드를 포함하여 ALERT_IF2 매크로를 정의할 수 있다.

ALERT_IF2를 한 번만 호출하면 이 항목의 처음에서 printf 코드의 모든 기능을 실행할 수 있다.

3. 사용자 디버깅 중단점 사용하기 [Bottom] [Top]

Visual Studio (디버거) 에서 디버깅 중단점을 삽입하지 않고 DebugBreak() 와 _ _debugbreak() 함수를 이용하여 코드 상에서 설정 가능하다.

_ _debugbreak() 함수는

x86 계열 컴퓨터에서는 다음과 같다.

4. 메모리 누수 탐지 [Bottom] [Top]

메모리 누수를 탐지하는 데 사용하는 기본 도구는 디버거와 CRT(C 런타임 라이브러리) 디버그 힙 함수. 디버그 힙 함수를 사용하려면 다음과 같이 헤더 파일을 선언한다.

주의> #include 문은 순서가 중요. 순서를 변경하면 제대로 작동하지 않을 수 있다.

4.1. 메모리 누수 정보 덤프 [Bottom] [Top]

4.2. 메모리 누수 정보 자동 덤프 [Bottom] [Top]

4.3. CRT 보고서 모드 설정 [Bottom] [Top]

5. 쓰레드 정보 표시 [Bottom] [Top]

6. 삽입된 코드 디버깅 [Bottom] [Top]

COM 이나 OLE DB 소비자 특성과 같이 Visual C++ 에서 지원하는 특성(Attributes)을 사용하면 프로그래밍을 단순화할 수 있다. 하지만 디버깅 시 실제 생성된 코드를 디버깅할 수가 없어서 불편할 경우 다음의 두가지 방법으로 삽입된 코드를 볼 수 있다.

6.1. 디버깅 중일 경우 [Bottom] [Top]

6.2. 삽입된 코드가 포함된 소스 파일 생성 [Bottom] [Top]

7. 자동으로 디버거 시작 [Bottom] [Top]

디버거가 자동으로 실행되도록 응용 프로그램을 설정하려면

  1. 레지스트리 편집기(regedit) 를 시작합니다.
  2. 레지스트리 편집기에서 HKEY_LOCAL_MACHINE 폴더를 엽니다.
  3. HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution Options 로 이동합니다.

  4. Image File Execution Options 폴더에서 디버깅할 응용 프로그램의 이름 (예: myapp.exe) 을 찾습니다. 디버깅할 응용 프로그램을 찾을 수 없으면 다음을 수행하십시오.

    1. Image File Execution Options 폴더를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 새 키를 클릭합니다.

    2. 새 키를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 이름 바꾸기를 클릭합니다.
    3. 응용 프로그램 이름 (이 예제의 경우 myapp.exe) 과 같아지도록 키 이름을 편집합니다.
  5. myapp.exe 폴더를 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 새 문자열 값을 클릭합니다.

  6. 새 문자열 값을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 이름 바꾸기를 클릭합니다.
  7. 이름을 debugger 로 바꿉니다.

  8. 새 문자열 값을 마우스 오른쪽 단추로 클릭하고 바로 가기 메뉴에서 수정을 클릭합니다.
    문자열 편집 대화 상자가 나타납니다.

  9. 값 데이터 상자에 vsjitdebugger.exe 를 입력합니다.

  10. 확인을 클릭합니다.
  11. 레지스트리 메뉴에서 끝내기를 클릭합니다.
  12. vsjitdebugger.exe 가 들어 있는 디렉터리가 시스템 경로에 있어야 합니다. 이 디렉터리를 시스템 경로에 추가하려면 다음 단계를 따릅니다.
    1. 제어판을 클래식 보기로 열고 시스템을 두 번 클릭합니다.
    2. 시스템 등록 정보에서 고급 탭을 클릭합니다.
    3. 고급 탭에서 환경 변수를 클릭합니다.
    4. 환경 변수 대화 상자의 시스템 변수 아래에서 Path 를 선택한 다음 편집 단추를 클릭합니다.
    5. 시스템 변수 편집 대화 상자의 변수 값에 디렉터리를 추가합니다. 목록의 각 항목을 구분하는 데는 세미콜론을 사용합니다.
    6. 확인을 클릭하여 시스템 변수 편집 대화 상자를 닫습니다.
    7. 확인을 클릭하여 환경 변수 대화 상자를 닫습니다.
    8. 확인을 클릭하여 시스템 등록 정보 대화 상자를 닫습니다.

이제, 응용 프로그램을 시작하면 Visual Studio 가 시작되고 응용 프로그램이 로드된다.

8. 디버깅 팁 [Bottom] [Top]

8.1. Just-In-Time 디버깅 팁 [Bottom] [Top]

서버에 Visual Studio 를 설치한 다음 처리되지 않은 예외가 발생하면 기본적으로 예외 대화 상자가 열린다. 사용자는 이 대화 상자에서 Just-In-Time 디버깅을 시작하거나 예외를 무시하도록 지정해야 한다. 무인 작업을 진행하려는 경우에는 이러한 작동 방식이 적합하지 않을 수 있다. Visual Studio 를 설치하기 전의 기본 동작처럼 처리되지 않은 예외가 발생해도 대화 상자가 열리지 않도록 서버를 구성하려면 레지스트리 편집기를 사용하여 다음 레지스트리 키를 삭제한다.

64비트 운영 체제에서는 다음 레지스트리 키도 삭제한다.

8.2. Win32 오류 코드 찾기 [Bottom] [Top]

기본 시스템 설치의 include 디렉터리에 있는 Winerror.h 에는 Win32 API 함수에 대한 오류 코드 정의가 포함되어 있다. 조사식 창 이나 간략한 조사식 대화 상자 에 코드를 입력하면 오류 코드를 찾을 수 있다. 예를 들면 다음과 같다.

8.3. 출력창의 바로가기 활용하기 [Bottom] [Top]

Visual Studio 의 출력창에 다음과 같은 메세지 형식으로 출력될 경우 출력창의 메세지를 더블클릭하면 소스 파일로 이동하거나 해당 파일을 열 수 있다.

8.4. Visual Studio 에서 실행 중인 확인하기 [Bottom] [Top]

Visual Studio 에서 실행 중인지 알아야 할 경우가 있다. 특히 Visual Studio 에서 실행될 때는 디버깅 메시지를 출력하다가 그냥 실행할 경우에는 오류로 처리해야 한다면 꼭 필요하다.

IsDebuggerPresent() 함수의 반환값은 다음과 같다.


CategoryDebug CategoryWin32

Visual Studio 에서 네이티브 코드 디버깅 (last edited 2009-09-11 02:45:08 by viper)