DirectX 9.0 의 소개 DirectX SDK 의 사용법 C 또는 C++ 에 의한 DirectX 프로그래밍 DirectX 애플리케이션의 디버그   [목차열람] [주소복사] [슬롯비우기]
DirectX 애플리케이션의 디버그
 
Microsoft DirectX 9.0

DirectX 애플리케이션의 디버그


여기에서는, C 및 C++ 애플리케이션의 디버그에 대해 설명한다. 설명하는 주제는, 다음과 같다.

디버그용과 리테일용의 DLL

Microsoft® DirectX®  소프트웨어 개발 킷 (SDK) 인스톨 프로그램에는, DirectX  동적 링크 라이브러리 (DLL)의 디버그 빌드 또는 리테일 빌드의 어느쪽이든을 인스톨 하는 옵션이 있다.

C++ 로 소프트웨어를 개발하고 있는 경우는, DLL 의 디버그 버전을 인스톨 하면 된다. 이 옵션에서는, 디버그 및 리테일의 DLL 가 시스템에 인스톨 된다. 리테일 버전에서는, 리테일 DLL 만이 인스톨 된다. DLL 의 디버그 버전에는 내부 데이터 구조를 검증하는 추가 코드가 있어, 프로그램의 실행중에 (OutputDebugString 함수를 사용해) 디버그의 에러 메시지를 출력한다. 에러가 발생 하면, 문제의 상세가 디버그 출력된다. DLL 의 디버그 버전은 리테일 버전보다 동작이 늦지만, 애플리케이션의 디버그에는 리테일 버전보다 도움이 된다. 애플리케이션을 출하하는 경우는, 리테일 버전을 출하하는 것.

SDK 의 디버그 버전이 인스톨 되고 있는 경우, DirectX 컨트롤 패널 유틸리티를 사용해, 대부분의 구성 요소의 디버그 빌드와 리테일 빌드를 교체된다. 이 기능을 유효하게 하려면 , SDK 를 인스톨 할 경우에 [디버그] 옵션을 선택한다.

디버그 메시지를 확인하려면 , 윈도우내나 리모트 컴퓨터에 디버그 출력이 표시되도록, 시스템의 구성을 설정한다. Microsoft Visual Studio® . NET 등의 개발 환경에서는, 이 설정이 가능하다. 설정 방법법에 대해서는, 개발 환경에 대한 문서를 참조할것.

디버그용의 빌드를 사용하는 경우는, 디버거가 관련하는 상징적 정보를 확실히 찾아낼 수 있도록(듯이) 하기 위해서, 이하에 나타내는 장소에 심볼 파일을 놓아두지 않으면 안 된다.

operating system디버거. pdb 파일의 장소. dbg 파일의 장소
Microsoft Windows® 98Microsoft Visual C++®바이너리와 같은 디렉토리바이너리와 같은 디렉토리
Windows 2000Visual Studio . NET바이너리와 같은 디렉토리%SystemRoot%\Symbols\<binary extension>\
Microsoft Windows NT®, Windows 2000Visual C++바이너리와 같은 디렉토리%SystemRoot%\Symbols\<binary extension>\
Windows NT, Windows 2000NTSD/KD%SystemRoot%\Symbols\<binary extension>\%SystemRoot%\Symbols\<binary extension>\
Windows XPVisual Studio . NET바이너리와 같은 디렉토리%SystemRoot%\Symbols\<binary extension>\

  Windows NT 또는 Windows 2000 으로 Visual C++ 개발 시스템을 사용해 디버그를 실행하는 경우는, Splitsym 개발툴은 사용하지 않는 것. Splitsym 는, Private 상징적 정보를 <binary>.dbg 파일로부터 바이너리 extension의 심볼 디렉토리 (%SystemRoot%\Symbols\Dll\ 등)에 복사 해, 바이너리 디렉토리로부터 원의 파일을 삭제해 버린다. Visual C++ 를 사용하려면 , Private 상징적 정보의 파일 (<binary>.dbg)이 바이노리필드와 같은 디렉토리에 놓여져 있을 필요가 있다. 따라서, 디버그용의 빌드를 사용하는 경우는, Private 상징적 정보의 복사만을 실시해, 삭제를 실시해서는 안 된다. 이것이 문제가 되는 것은, Windows NT 또는 Windows 2000 으로 Visual C++ 를 사용하는 경우 뿐이다. 그 외의 디버그 정보에 대해서는, Visual C++ 의 문서 및 Windows 2000  Driver Development Kit (DDK)의 문서를 참조할것.

디버그 DLL 의 추가와 삭제

리테일 런타임을 인스톨 하고 있어 디버그 런타임으로 변경하고 싶은 경우는, (DXSDK) \SDKDev\WindowsXP 폴더에 있는 Dxpsetup.exe 를 실행한다.

디버그 런타임을 인스톨 하고 있어 리테일 런타임에 되돌리고 싶은 경우는, Windows System 폴더에 있는 Undxxpdebug.exe 를 실행한다. 이 조작은,[스타트] 버튼을 클릭해,[파일명을 지정해 실행] 을 클릭해, 다이알로그 박스에 「undxxpdebug」라고 입력해도 실행할 수 있다.

  Windows 98, Windows Millennium Edition (Windows Me), 또는 Windows 2000 을 사용하고 있는 경우, 런타임의 디버그 버전을 삭제하려면 , DirectX SDK 를 언인스톨할 필요가 있다.

그 외의 리소스

C++ 메모리의 파손을 발견하려면 , Compuware 사의 BoundsChecker  World Wide Web 링크 등의 메모리 파손/누수 툴의 사용을 검토하면 좋다.

Microsoft 에서는, MSDN® 로 "knowledge base (놀리지(knowledge ) 베이스)" 의 기사 데이타베이스를 공개하고 있다. 기사를 참조하려면 ,www.microsoft.com/japan/msdn/  World Wide Web 링크 (일본어)에 접속하는지,msdn.microsoft.com  World Wide Web 링크 (영어)에 접속해, 목적의 주제를 검색한다.

AppVerifier 툴은, heap의 파손, 잠금의 사용, 무효인 핸들, thread 스택 사이즈의 체크등에 대해서 애플리케이션을 감시한다. 이 툴을 찾아내려면 ,MSDN Library  World Wide Web 링크 로 「Testing Applications with AppVerifier」라고 검색한다.



© 2002 Microsoft Corporation. All rights reserved.
↑TOP