Devpia VC++ 게시판에 지수경 (cskcsk) 님이 Debugging 팁을 올려주셨다..
그중에 WinDBG 를 사용한 방법을 잊어버리지 않기 위해서 다시 정리해보자..-ㅅ-);;
머리가 돌이라....킁..;;
1. 먼저 zMiniDump.h/cpp 파일을 참조 디렉토리나 프로젝트 파일에 포함하자 (파일로 첨부되어있다)
2. WinDBG 를 다운로드 받자
LINK : http://www.microsoft.com/whdc/devtools/debugging/installx86.mspx
3. Project 설정을 바꿔주자
VS2005 , 2008 경우다
프로젝트 -> 속성 -> 구성속성 -> C/C++ -> 코드생성 에서
'C++ 예외처리가능' 이놈이 기본으로 '예(/EHsc)' 로 되어있다 이놈을 -> '예,SEH 예외 있음(/EHa)' 로 변경해주자
3, stdafx.h 파일에 zMiniDump.h 파일을 인쿠르드 해주자..
#include "../../Common/zMiniDump.h"
4. 버튼 하나 맹글어서 맵핑한 다음에 다음과같은 코드를 넣어보자
void CXXDlg::OnBnClickedButton1()
{
ZDUMP_MSGDUMP;
try
{
TCHAR *p = NULL;
_tcscpy(p,_T("abcdefg")); //Error
}
catch (...)
{
}
}
당연히 널포인터에 문자열을 복사했으니 에러다..-_-);;
5. 빌드는 당연히 되고.....Debug 폴더에서 해당 exe를 실행해보자 버튼까지 클릭하면
---------------------------
MiniDump
---------------------------
dows: 5.1.2600, SP 2.0, Product Type 1
Process: D:\Work\TEST\HelloMFC\release\HelloMFC.exe
Exception Addr: 00401647
Exception Code: C0000005
Write Address: 00000000
Instruction: 66 89 02 83 C1 02 83 C2 02 66 85 C0 75 EF C7 45
Registers:
EAX: 00000061 EBX: 00000001 ECX: 00439B78 EDX: 00000000
ESI: 00439B70 EDI: 0013FE90 ESP: 0013F7FC EBP: 0013F81C
EIP: 00401647 EFlags: 00010246
Call Stack:
00401647
00405826
00405A33
0040604E
00409FED
0040A9F9
0040735C
004094CA
00409557
77CF8709
77CF87EB
77CFB368
77CFB3B4
7C93EAE3
77CFB7AB
77186FF6
771870D8
771893DD
77CF8709
77CF87EB
---------------------------
확인
---------------------------
이런 메시지가 표시된다..그러면서 해당 exe 의 경로에
EXE 파일명 + 년월일시분초 .dmp 파일이 생성된다
해당 dmp 파일을 WinDBG 로 열어보자
WinDBG 실행후
File -> Open Crash Dump 한뒤에 위에서 실행했던 exe 가 있는 폴더로 가서 dmp 파일을 열어놓은뒤
아랫쪽 Command Line 에 다음과같이 입력해보자
!analyze -v
161:
162: try
163: {
164: TCHAR *p = NULL;
> 165: _tcscpy(p,_T("abcdefg"));
166: }
167: catch (...)
168: {
169:
170: }
'[프로그래머]야근방지' 카테고리의 다른 글
node.js 오라클 접속하기... (0) | 2020.02.04 |
---|---|
C# SQLite Sample Application (0) | 2012.03.09 |
general error c101008d: Failed to write the updated manifest to the resource of file (0) | 2012.02.09 |
WinCE 용 ActiveX Launcher 만들기..!! (0) | 2008.08.26 |