TraceTool 跟踪工具的瑞士军刀(C++版使用)
来源:互联网 发布:淘宝上买psv破解版 编辑:程序博客网 时间:2024/06/16 09:57
TraceTool查看器可以显示多种类型的来源(从提供的框架、日志文件、事件日志、或者OutputDebugString方法)。一个简单而强大的客户端框架发送简单的跟踪,分组跟踪,类和对象浏览器,转储,调用堆栈。
5.下面在对话框TestTraceDlg.cpp文件,添加头文件:
8.运行Viewer,再编译、运行工程,结果如下图所示:
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.新建基于对话框的测试工程名称TestTrace,使用Unicode库,共享DLL方式,其余默认;
2.将"...\TraceTool 12.4\Cpp\Source"下的tracetool.h和tracetool.cpp复制到工程目录下,添加到项目工程里面;
3.因为工程是启动预编译头的,所以双击"解决方案资源管理器"的"tracetool.cpp",把下面的其中一行:
1//#include "stdafx.h" // remove precompiled header
取消注释,改为:1#include "stdafx.h" // remove precompiled header
4.试着编译下工程,能编译通过;5.下面在对话框TestTraceDlg.cpp文件,添加头文件:
1#include "tracetool.h"
6.添加几个测试按钮,按钮代码如下: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.在第四个按钮代码中,需要改动一些地方才能以支持中文保存XML,支持中文宽字节显示,具体修改的内容在下面给出的下载文件里;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,再编译、运行工程,结果如下图所示:
下载地址: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》
0 0
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- netcat(瑞士军刀)的使用
- nc(瑞士军刀)的详细使用
- nc(瑞士军刀)的详细使用
- BusyBox---- Linux 工具里的瑞士军刀
- Oracle跟踪工具使用
- 黑客必备,瑞士军刀-nc 使用(一)
- Oracle查看跟踪文件及其tkprof工具的使用
- 编程工具系列之 ------使用GDB的堆栈跟踪功能
- 编程工具系列之一------使用GDB的堆栈跟踪功能
- 瑞士军刀NC使用教程
- NC 瑞士军刀使用 [1]
- NC 瑞士军刀使用 [2]
- 瑞士军刀、扫锚工具、命令行方式嗅探器、终端服务密码破解工具使用
- http协议监测调试的“瑞士军刀” LiveHttpHeaders 安装使用教程
- Linux系统优化的瑞士军刀,使用Stacer优化Ubuntu系统
- 五花八门的bug跟踪工具
- 类的常量成员的初始化
- 类成员初始化顺序
- 【bzoj1180】【CROATIAN2009】【OTOCI】【lct】
- 空类中默认产生的成员函数
- 微信公众号(服务号)接入开发(2)之微信授权登陆
- TraceTool 跟踪工具的瑞士军刀(C++版使用)
- 拷贝构造和赋值函数
- 深入浅出设计模式python版——策略模式(stratery)
- 【Windows】Git Bash技巧 - 向Linux上的Terminal靠拢!
- zip4j -- Java处理zip压缩文件的完整解决方案
- 将类的方法声明为虚函数的作用
- ListView(SimpleCursorAdapter实现)
- Linux 的 completion机制
- 第四周项目2-太乐了