본문 바로가기

Robotics/Software Tech.

[MFC]TRACE 파일 저장

주로 프로그램 개발할때, 중간중간에 문제점을 판단하기위해서 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