주로 프로그램 개발할때, 중간중간에 문제점을 판단하기위해서 TRACE를 걸어놓는데,
대부분 DBMON으로 프로그램 실행한 후에 TRACE걸린 내용을 확인하지만..
프로그램을 개발자 PC가 아닌 다른 곳에 설치해놓고 매번 프로그램 오류내용을 확인하려고
DBMON으로 확인할 수 가 없다.
그래서, TRACE의 내용을 파일로 저장해놓고 이 파일을 열어서 확인해보는 방법은 어떤가해서..
아래의 방법을 찾아봤다..
StdAfx.h에 아래 코드의 굵은 글씨 부분을 작성한다.
#if !defined(AFX_STDAFX_H__B4E10403_E7DB_4A11_91BE_68BB73CF5A3D__INCLUDED_)
#define AFX_STDAFX_H__B4E10403_E7DB_4A11_91BE_68BB73CF5A3D__INCLUDED_
#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
#define VC_EXTRALEAN // Exclude rarely-used stuff from Windows headers
#include <afxwin.h> // MFC core and standard components
#include <afxext.h> // MFC extensions
#include <afxdisp.h> // MFC Automation classes
#include <afxdtctl.h> // MFC support for Internet Explorer 4 Common Controls
#ifndef _AFX_NO_AFXCMN_SUPPORT
#include <afxcmn.h> // MFC support for Windows Common Controls
#endif // _AFX_NO_AFXCMN_SUPPORT
#include <afxsock.h> // MFC socket extensions
#include <afxtempl.h>
#undef TRACE
void TRACE( char *pFormat, ... );
//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
#endif // !defined(AFX_STDAFX_H__B4E10403_E7DB_4A11_91BE_68BB73CF5A3D__INCLUDED_)
StdAfx.cpp에 아래 코드의 굵은 글씨 부분을 작성한다.
// stdafx.cpp : source file that includes just the standard includes
// iClient.pch will be the pre-compiled header
// stdafx.obj will contain the pre-compiled type information
#include "stdafx.h"
#include <afxmt.h>
CCriticalSection g_cs;
void TRACE( char *pFormat, ... )
{
g_cs.Lock();
CFile f;
f.Open( "c:\\prj\\trace_log.txt", // 파일이 생성될 경로를 각자 원하는 곳으로 변경해야 함.
CFile::modeCreate | CFile::modeWrite | CFile::modeNoTruncate );
f.SeekToEnd();
char buff[1024];
va_list arglist;
va_start( arglist, pFormat );
vsprintf( buff , pFormat, arglist );
va_end( arglist );
CTime t = CTime::GetCurrentTime();
CString strTime;
strTime.Format( "%02d:%02d:%02d ",
t.GetHour(), t.GetMinute(), t.GetSecond() );
f.Write ( strTime, strTime.GetLength() );
strcat ( buff, "\r\n" );
f.Write ( buff, strlen(buff) );
f.Close();
g_cs.Unlock();
}
사용 방법
TRACE( "서버가 시작됨 !!" );
TRACE( "수신된 바이트 : %d", nRecv );
TRACE( "변수의 값 : %d", nRead );
TRACE( "문자열 : %s", szBuff );
...
trace_log.txt 출력 결과
12:08:22 서버가 시작됨 !!
12:08:23 수신된 바이트 : 5
12:08:25 변수의 값 : 10240
12:08:33 문자열 : Hello
'Robotics > Software Tech.' 카테고리의 다른 글
AJAX (0) | 2008.01.02 |
---|---|
IOCP 사용하기 (0) | 2008.01.01 |
PUMA Inverse kinematics C 프로그램 소스 (0) | 2007.12.26 |
인터넷폰(internet phone) 논문 (0) | 2007.12.20 |
Windows MIDI and Digital Audio Programming (0) | 2007.12.20 |