TraceTool 跟蹤工具的瑞士軍刀(C++版使用)
阿新 • • 發佈:2017-07-22
std href cpp bug 默認 ++ margin 資料 預編譯
TraceTool查看器能夠顯示多種類型的來源(從提供的框架、日誌文件、事件日誌、或者OutputDebugString方法)。一個簡單而強大的client框架發送簡單的跟蹤,分組跟蹤。類和對象瀏覽器,轉儲,調用堆棧。
。使用Unicode庫,共享DLL方式。其余默認;
2.將"...\TraceTool 12.4\Cpp\Source"下的tracetool.h和tracetool.cpp拷貝到project文件夾下,加入到項目project裏面;
3.由於project是啟動預編譯頭的,所以雙擊"解決方式資源管理器"的"tracetool.cpp",把以下的當中一行:
取消凝視,改為:
4.試著編譯下project。能編譯通過;
5.以下在對話框TestTraceDlg.cpp文件。加入頭文件:
6.加入幾個測試button。button代碼例如以下:
7.在第四個button代碼中,須要修改一些地方才幹以支持中文保存XML,支持中文寬字節顯示,詳細修改的內容在以下給出的下載文件中。
8.執行Viewer,再編譯、執行project,結果例如以下圖所看到的:
1.TraceTool 12.4: The Swiss-Army Knife of Trace http://www.codeproject.com/KB/trace/tracetool.aspx
2.《C++ TraceTool API documentation》
主頁:http://www.codeproject.com/KB/trace/tracetool.aspx
下載C++ demo, library, and documentation 和TraceTool viewer and documentation
以下進行測試,Visual Studio 2008 SP1環境:
1.新建基於對話框的測試project名稱TestTrace
2.將"...\TraceTool 12.4\Cpp\Source"下的tracetool.h和tracetool.cpp拷貝到project文件夾下,加入到項目project裏面;
3.由於project是啟動預編譯頭的,所以雙擊"解決方式資源管理器"的"tracetool.cpp",把以下的當中一行:
1 |
|
//#include "stdafx.h" // remove precompiled header |
1 |
|
#include "stdafx.h" // remove precompiled header |
5.以下在對話框TestTraceDlg.cpp文件。加入頭文件:
1 |
|
#include "tracetool.h" |
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"這是寬字節"); //寬字節,改動了源代碼以顯示中文 } |
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++版使用)