1. 程式人生 > >TraceTool 跟蹤工具的瑞士軍刀(C++版使用)

TraceTool 跟蹤工具的瑞士軍刀(C++版使用)

std href cpp bug 默認 ++ margin 資料 預編譯

TraceTool查看器能夠顯示多種類型的來源(從提供的框架、日誌文件、事件日誌、或者OutputDebugString方法)。一個簡單而強大的client框架發送簡單的跟蹤,分組跟蹤。類和對象瀏覽器,轉儲,調用堆棧。


技術分享

主頁:http://www.codeproject.com/KB/trace/tracetool.aspx
下載C++ demo, library, and documentation 和TraceTool viewer and documentation

以下進行測試,Visual Studio 2008 SP1環境:
1.新建基於對話框的測試project名稱TestTrace

。使用Unicode庫,共享DLL方式。其余默認;
2.將"...\TraceTool 12.4\Cpp\Source"下的tracetool.htracetool.cpp拷貝到project文件夾下,加入到項目project裏面;
3.由於project是啟動預編譯頭的,所以雙擊"解決方式資源管理器"的"tracetool.cpp",把以下的當中一行:

1
//#include "stdafx.h" // remove precompiled header
取消凝視,改為:
1
#include "stdafx.h" // remove precompiled header
4.試著編譯下project。能編譯通過;
5.以下在對話框TestTraceDlg.cpp文件。加入頭文件:
1
#include "tracetool.h"
6.加入幾個測試button。button代碼例如以下:
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
/** 簡單使用實例,多節點也能夠使用縮進方式 */
void CTestTraceDlg::OnBnClickedButton1()
{
//----------------------------------單節點加入-----------------------------------
TTrace::Debug()->Send("你好!"); //Debug模式
TTrace::Debug()->Send("這是Debug跟蹤。");
TTrace::Debug()->Send("你好!", "這是帶有凝視的");

TTrace::Warning()->Send("This is Warning."); //Warning模式

TTrace::Error()->Send(_T("This is Error.")); //Error模式
TTrace::Error()->Send("---");

//----------------------------------多節點加入-----------------------------------
TraceNodeEx *nodeEx = TTrace::Debug()->CreateChildEx("多節點");
nodeEx->Send();
nodeEx->traceNode->Send("子節點");
delete nodeEx;

//----------------------------------更改字體等-----------------------------------
TraceNodeEx *nodeEx2 = TTrace::Debug()->CreateChildEx("豐富節點");
nodeEx2->AddFontDetail(-1, //列索引,-1表示全部
true, //是否粗體
false, //是否斜體
255, //顏色,-1表示默認顏色
12, //字體大小,0表示普通大小
"宋體"); //字體名稱
nodeEx2->AddBackgroundColor(RGB(192,220,192), //背景顏色
3); //列索引
nodeEx2->Members()->Add("成員");
nodeEx2->Members()->Add("成員列一", "成員列二", "成員列三")
->SetFontDetail(1, //列索引,-1表示全部
false, //是否粗體
true, //是否斜體
7071633, //顏色。-1表示默認顏色
12, //字體大小。0表示普通大小
"黑體"); //字體名稱
nodeEx2->Members()->Add("列1")
->Add("列1-1")
->Add("列1-1-1", "列1-1-2");
nodeEx2->Send(); //發送節點到查看器。返回TraceNode *指針
nodeEx2->traceNode->ResendIconIndex(CST_ICO_COLLECT_ITEM);//改變此節點圖標
delete nodeEx2;

//----------------------------------對象轉儲-----------------------------------
char buffer[100] = "1234567890qwertyuiop";
TTrace::Debug()->SendDump("轉儲測試", NULL, "buffer變量", buffer, 15);

//----------------------------------XML字符串-----------------------------------
TTrace::Debug()->SendXml("XML測試", "<Data>這是XML信息</Data>");
}
/** 保存查看器內容 */
void CTestTraceDlg::OnBnClickedButton2()
{
//----------------------------------保存到文本,不包含右邊的信息-----------------------------------
TTrace::WindowTrace()->SaveToTextfile("日誌文件.txt"); //保存到當前文件夾下,亦可完整路徑

//----------------------------------保存到XML。包含右邊的信息-----------------------------------
TTrace::WindowTrace()->SaveToXml("日誌文件.xml"); //保存到當前文件夾下。亦可完整路徑
}
/** 設置自己主動保存查看器日誌文件 */
void CTestTraceDlg::OnBnClickedButton3()
{
//----------------------------------設置查看器日誌-----------------------------------
TTrace::WindowTrace()->SetLogFile("C:\\查看器日誌.XML",//查看器日誌文件名稱
2, //0 禁用;1 啟用;2 每日新文件(文件名稱+CCYYMMDD)
-1); //行數限制,以開始一個新文件,-1 不限制
}
/** 不發送到查看器。可單獨保存跟蹤消息到XML */
void CTestTraceDlg::OnBnClickedButton4()
{
TTrace::Options()->sendMode = None; //設置不發送到TraceTool
TTrace::Options()->SendDate = true; //開啟示送日期
TTrace::Options()->SendThreadId = false; //關閉發送線程ID
TTrace::WindowTrace()->SetLogFile("本地日誌.XML", //本地日誌文件名稱
4, //3 禁用;4 啟用;5 每日新文件(文件名稱+CCYYMMDD)
3000); //行數限制,以開始一個新文件,-1 不限制
TTrace::Debug()->Send("這是多字節"); //多字節
TTrace::Debug()->Send(L"這是寬字節"); //寬字節,改動了源代碼以顯示中文
}
7.在第四個button代碼中,須要修改一些地方才幹以支持中文保存XML,支持中文寬字節顯示,詳細修改的內容在以下給出的下載文件中。
8.執行Viewer,再編譯、執行project,結果例如以下圖所看到的:
技術分享

下載地址:http://download.csdn.net/detail/akof1314/3912968

擴展資料:
1.TraceTool 12.4: The Swiss-Army Knife of Trace http://www.codeproject.com/KB/trace/tracetool.aspx
2.《C++ TraceTool API documentation》

TraceTool 跟蹤工具的瑞士軍刀(C++版使用)