수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1693842
  • Today | 193
  • Yesterday | 588

Programming/Debugging2007/03/21 09:23

파일로 트레이스 하도록 바꾸기 (3줄이면 됨)

원본 : http://www.debuglab.com/knowledge/filetrace.html

1.요약

MFC에서 말입니다. 모든 트레이스를 파일로 하도록 바꿔봅시다.
예전에 어떻게 좀 해볼라고 하다가 실패했는데, 간단하고도 효과적인 방법이 무수히 많이 있습니다. 그중에 하나!


2.본문

트레이스를 저장할 로그 파일을 하나 만듭니다. 아무래도 프로그램이 살아있는 내내 써야할테니 전역적으로 만드는 것이 좋겠죠..

CFile dumpFile; 

프로그램이 시작할 때 다음과 같이 해줍니다.


dumpFile.Open(_T("dump.log"), CFile::modeWrite | CFile::modeCreate); 

afxDump.m_pFile = &dumpFile; 

끝입니다.

자.. 위와 같이 했다고 치고 다음과 같이 사용하면 어찌 될까요?


_RPT0(_CRT_WARN, "RPT0\n"); 

TRACE("trace..\n"); 

afxDump << "afxDump\n"; 

ATLTRACE("atltrace\n"); 

위에 3개는 잘 나오지만 ATLTRACE 에서는 안됩니다.
왜냐면, ATLTRACE 는 OutputDebugString() API 로 구현되었기 때문이죠.

TRACE 매크로는 afxDump 를 사용해서 구현됩니다.
그리고 afxDump는 AfxOutputDebugString()을 사용해서 구현됩니다.
AfxOutputDebugString() 은 debug 버전에서는 _RPT0 매크로를 사용하고 release 버전에서는 OutputDebugString() 을 사용합니다.

자, 위에 글을 또박또박 읽으셨을 분은 많지 않으리라 생각합니다만
어쨌든, 위와같은 사실을 두고 봤을때 afxDump 에 파일을 대입한 것이 _RPT0 에게 까지 영향을 미친다는 사실은 신기하지 않을 수 없습니다.

원인은 다음과 같습니다.

CRT 는 trace를 hooking 할 수 있도록 _CrtSetReportHook() 라는 함수를 두고 있습니다. MFC는 다음과 같이 사용하고 있군요.

pfnOldCrtReportHook = _CrtSetReportHook(_AfxCrtReportHook);

-----------------------------------------------------------

물론 좋은 툴을 사용할 줄 아는 지혜도 필요하겠죠.

www.sysinternals.com 에 가셔서 DebugView 라는 유틸을 받아서 사용해 보세요.


3.예제



4.참고

Debugging Windows Programs, Strategies, Tools, and Techniques for Visual C++ Programmers p.138,139

MFC, ATL source code and MSDN.



- 2001.08.13 Smile Seo -

"Debugging" 카테고리의 다른 글
  • Set Next Statement 를 통해서 디버깅 하기 (0)2007/03/23
  • 파일로 트레이스 하도록 바꾸기 (3줄이면 됨) (0)2007/03/21
  • Watch 창에서 함수 실행하기 (0)2007/03/21
  • 소스로 바로가는 TRACE (0)2007/03/19
  • LastError를 보여주는 Debugging Trace Macro (0)2007/03/05
2007/03/21 09:23 2007/03/21 09:23
Posted by webdizen
Tags file, TRACE
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/2709

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1 ... 540 541 542 543 544 545 546 547 548 ... 3009  Next»

RSS HanRSS
Blog Image
webdizen
이곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (3009)
Webdizen (141)
Life (6)
Diary (16)
Blog (9)
IDEA (2)
Travel (10)
Book (16)
Photo (7)
Movie (8)
Music (14)
Leisure Sports (10)
Funny (6)
Hardware (121)
Software (120)
Windows (5)
Unix & Linux (120)
Installation (5)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (804)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (2)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (4)
Network (66)
Web (79)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • XUL
  • Refactoring
  • Template
  • process scheduling
  • 소교
  • 마주앙 미셀
  • Profile
  • Tuning
  • Semapores
  • 노테르담
  • 윈도우즈 재부팅
  • 시스템 공격
  • 원격 네트워크
  • Performance
  • 패턴인식
  • 차원적 사고
  • Calendar
  • 조니워커 블루
  • 강대라이크
  • 압축 프로그래밍

Recent Articles

  • 트위터(Twitter)의 시작!.
  • 청년 리더의 조건.
  • 애플의 타블렛 PC - 아이패드....
  • 미래의 인터페이스 - 육감 기....
  • 기초발성법 동영상 강좌.

Recent Comments

  • 학교 과제물중 쓰레드에 대하....
    장진혁 03/17
  • 관리자만 볼 수 있는 댓글입....
    비밀방문자 03/12
  • 상대방의 이야기를 열심히 경....
    DoNuts 03/03
  • Lots of students know techn....
    Bobbi35Shannon 02/25
  • 좋은글 잘 보고 갑니다..
    Und_hacker 01/08

Recent Trackbacks

  • printf,scanf를 이용한 형식....
    yundream의 프로그래밍 이야기 03/10
  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 2009
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007

Archive

  • 2010/02 (1)
  • 2010/01 (6)
  • 2009/12 (5)
  • 2009/09 (3)
  • 2009/08 (1)

Calendar

«   2010/03   »
일 월 화 수 목 금 토
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.