TraceTool 跟踪工具的瑞士军刀(C++版使用)
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.h和tracetool.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表示全部 true, //是否粗体 false, //是否斜体 , //颜色,-1表示默认颜色 , //字体大小,0表示普通大小 "宋体"); //字体名称 nodeEx2->AddBackgroundColor(RGB(,,), //背景颜色 ); //列索引 nodeEx2->Members()->Add("成员"); nodeEx2->Members()->Add("成员列一", "成员列二", "成员列三") ->SetFontDetail(, //列索引,-1表示全部 false, //是否粗体 true, //是否斜体 , //颜色。-1表示默认颜色 , //字体大小。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; //----------------------------------对象转储----------------------------------- ] = "1234567890qwertyuiop"; TTrace::Debug()->SendDump(); //----------------------------------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",//查看器日志文件名称 , //0 禁用;1 启用;2 每日新文件(文件名称+CCYYMMDD) -); //行数限制,以開始一个新文件,-1 不限制 } /** 不发送到查看器。可单独保存跟踪消息到XML */ void CTestTraceDlg::OnBnClickedButton4() { TTrace::Options()->sendMode = None; //设置不发送到TraceTool TTrace::Options()->SendDate = true; //开启示送日期 TTrace::Options()->SendThreadId = false; //关闭发送线程ID TTrace::WindowTrace()->SetLogFile("本地日志.XML", //本地日志文件名称 , //3 禁用;4 启用;5 每日新文件(文件名称+CCYYMMDD) ); //行数限制,以開始一个新文件,-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++版使用)的更多相关文章
- NetCat,在网络工具中有“瑞士军刀”美誉
nc命令详解 NetCat,在网络工具中有“瑞士军刀”美誉,其有Windows和Linux的版本.因为它短小精悍(1.84版本也不过25k,旧版本或缩减版甚至更小).功能实用,被设计为一个简单.可 ...
- 推荐windows下的日志跟踪工具:SnakeTail
用过Linux的同学都知道,在Linux中要实时跟踪日志文件那是非常的方便,Tail.Less都可以做到. 开启动态跟踪后,程序会监视文件修改,从而不断刷新出最新的内容,对于线上运维特别有用. 今 ...
- 项目管理和缺陷跟踪工具Redmine
官网: http://www.redmine.org/ http://demo.redmine.org/ 下载: http://www.redmine.org/projects/redmine/wik ...
- PLSQL_性能优化效能跟踪工具SQL Trace分析(案例)
2014-06-25 Created By BaoXinjian
- 老毛桃U盘启动盘制作工具V20140501完美贡献版
老毛桃U盘启动盘制作工具V20140501完美贡献版 下载地址:http://down.laomaotao.net:90/LaoMaoTao_V2014zhuangji.exe 老毛桃U盘装系统综合教 ...
- readmine项目管理和缺陷跟踪工具
官方网站:http://www.redmine.org/演示地址:http://demo.redmine.org/下载地址:http://www.redmine.org/projects/redmin ...
- 分享两个网址,一个是使用mssql自带的跟踪工具和分析工具
http://www.cnblogs.com/Fooo/archive/2013/02/19/2916789.html 使用mssql自带的跟踪工具和分析工具 http://blog.csdn.net ...
- 服务跟踪sleuth和可视化跟踪工具Zipkin
一.增加配置 在Order工程中添加配置 <dependency> <groupId>org.springframework.cloud</groupId> < ...
- 谷歌开源漏洞跟踪工具 Monorail 存在跨站点搜索漏洞
一名安全研究员表示,在谷歌开源漏洞跟踪工具 Monorail 中找到一个漏洞,可被用于执行跨站点搜索 (XS-Search) 攻击. Monorail 用于检查和 Chromium 相关项目中的问题, ...
随机推荐
- html2canvas.js网页截图功能
需求:将网页生成图片,用户自行长按图片进行保存图片,再分享朋友圈.其中,都可识别图中的二维码.(二维码过小会识别不出) 首先,先来科普一下微信网页识别二维码原理:截屏识别,当客户端发现用户在网页的im ...
- C#学习基础概念二十五问
C#学习基础概念二十五问 1.静态变量和非静态变量的区别?2.const 和 static readonly 区别?3.extern 是什么意思?4.abstract 是什么意思?5.internal ...
- PYDay10&11&12&13-常用模块:time|datetime|os|sys|pickle|json|xml|shutil|logging|paramiko、configparser、字符串格式化、py自动全局变量、生成器迭代器
1.py文件自动创建的全局变量 print(vars()) 返回值:{'__name__': '__main__', '__package__': None, '__loader__': <_f ...
- 【11】specified value,computed value,used value计算方法
[11]specified value,computed value,used value计算方法 specified value(规范值): 计算方法如下: 如果样式表设置了一个值,使用这个值 如果 ...
- 大数据学习——hbase的shell客户端基本使用
1 基本shell命令 1 在hbase的 bin目录下进入命令行 ./hbase shell 2 查看有哪些表 list 3 创建一个表 create 't_user_info', {NAME = ...
- Redis学习笔记01---配置文件
1.配置文件用法 启动redis的时候指定配置⽂件路径: ./redis-server /path/to/redis.conf 不指定配置⽂件的时候使⽤内置配置⽂件启动,此⽅法仅适⽤于开发和测试. 2 ...
- x86保护模式-七中断和异常
x86保护模式-七中断和异常 386相比较之前的cpu 增强了中断处理能力 并且引入了 异常概念 一 80386的中断和异常 为了支持多任务和虚拟存储器等功能,386把外部中断称为中断 ...
- .NET重构(八):周结账单中,给报表添加参数
导读:进行完了日结报表的制作,大松一口气.不过,刚开始看着周结账单中的两个参数问题,也是愁了很久.不过,只要思想不滑坡,办法总比困难多.接下来,就写写我制作周结账单报表的过程. 一.添加参数 1,在日 ...
- SPOJ-COLONY - Linearian Colony!简单二分思想
COLONY - Linearian Colony 一道很水的题却坑我两天!在CF上做过类似的题,用递归可以找到答案,但感觉不会这么麻烦,于是看看有没有什么规律,对Y分奇偶貌似可以找到规律,但WA了三 ...
- iOS学习笔记07-运动事件和远程控制
之前我们已经学习了触摸处理和手势识别,其实这两个同属于iOS事件的触摸事件,今天我们来学习下iOS事件的另外两个事件: 一.运动事件 运动事件,是通过加速器进行触发,和触摸事件一样,继承UIRespo ...