TraceTool 跟踪工具的瑞士军刀(C++版使用)

        TraceTool查看器可以显示多种类型的来源(从提供的框架、日志文件、事件日志、或者OutputDebugString方法)。一个简单而强大的客户端框架发送简单的跟踪,分组跟踪,类和对象浏览器,转储,调用堆栈。

主页: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.htracetool.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,支持中文宽字节显示,具体修改的内容在下面给出的下载文件里;
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》

SwissArmyKnife是什么SwissArmyKnife 是一款方便调试android UI的工具,可以兼容所有android本,不需要root权限。可以直接在android手机屏幕上显示当前Activity中所有控件(不管是否隐藏)的边界,内外边距大小,每一个控件大小,图片大小,字体颜色,大小,以及自定义信息。同时可以直接在屏幕上取色,另外还提供了直尺(单位为px和dp),圆角尺(单位dp)工具,可以直接测量大小。针对android开发者还提供了布局树查看功能,可以直接在手机屏幕查看当前Activity中所有控件层次信息等。可以通过滚动层级滚轮来控制只显示某一层级的信息,避免层级覆盖等。使用方式compile 'com.wanjian:sak:0.0.3'android 4.0及以上用户直接在application的onCreate中调用 com.wanjian.sak.LayoutManager.init(Application context) ,其他本可以在activity的onResume中调用com.wanjian.sak.LayoutManager.init(Activity act)初始化。启动app后会在屏幕左上角看到一个 android logo ,点击即可进入功能界面。功能界面边框选项开启边框选项后可以在手机屏幕看到所有控件的边界,效果如下内外边距选项开启后会在屏幕看到如下效果半透明绿色代表内边距,PT表示上边内边距(padding top),PL表示左内边距(padding left),PT表示右内边距(padding right),PB便是下内边距(padding bottom)。半透明红色代表外边距, ML,MT,MR,MB分别表示左外边距,上外边距,右外边距,下外边距。所有边距单位都是dp(pt),android中会四舍五入,所有边距都是整数,所以可能跟设计图中有不超过1dp(pt)的误差。宽高选项开启后会看到控件的宽高,单位是dp(pt)图片宽高字体大小字体颜色16进制,ARGB强制图片宽高若开启图片宽高选项后看不到图片大小,可以尝试开启强制图片宽高选项。 ps 该选项可能会导致滑动卡顿自定义信息自定义信息用于android开发者调试使用,开发者可以为view设置setTag(com.wanjian.sak.CanvasManager.INFO_KEY,Object),设置后并开启自定义信息选项后就可以在控件左上角看到自定义的文本信息了。比如开发者想要在屏幕上看到TextView中有多少个文字,就可以这样使用textview.setTag(com.wanjian.sak.CanvasManager.INFO_KEY,textview.getText().length()),这样开启自定义信息选项后就可以在TextView上看到文字长度了。实时刷新开启实时刷新后当手指在屏幕上移动时就可以实时看到相关信息,开启实时刷新后可能会导致滑动卡顿,也可能导致触摸,点击等失效。层级信息可以通过滚动滚轮来控制只显示某一层次区间的信息,比如只想看ListView中子控件的大小,就可以滚动滚轮来控制只显示ListView子控件大小,具体调整成多少需要多次尝试。滚轮可以控件边框,宽高,布局树等等。直尺圆角尺,取色器开启后会在屏幕左上角显示,取色器刚开启时只会在屏幕左上角看到一个黑框,拖动到要取色的位置后抬起手机即可完成取色,取色器四个角可以获取所指像素的颜色值。取色器可以获取native页面每个像素颜色,也可以获取webview中每一个像素的颜色。布局树布局树可以双指缩放扩展用户可以方便的对SAK进行扩展,只需要继承自AbsCanvas并重新onDraw(Canvas canvas, Paint paint, ViewGroup viewGroup, int startLayer, int endLayer),或者继承自CanvasLayerAdapter并重写drawLayer(Canvas canvas, Paint paint, View view)又或者继承自CanvasLayerTxtAdapter区别在于onDraw中没对层级进行处理,drawLayer中的view已经是层级区间的view,CanvasLayerTxtAdapter提供了drawTxt(String txt, Canvas canvas, Paint paint, View view)方法,可以直接调用drawTxt就可以把txt绘制到当前view左上角。写完自定义的Canvas后还需要在OperatorView布局中加入布局代码,用于开启自定义的Canvas,比如在布局中加入开关按钮,并为按钮添加监听,开启后调用 Canvas
什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉。因为它短小精悍、功能实用,被设计为一个简单、可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可以作为server以TCP或UDP方式侦听指定端口 (2)端口的扫描,nc可以作为client发起TCP或UDP连接 (3)机器之间传输文件 (4)机器之间网络测速                                                                                                                                                                                                                         nc的控制参数不少,常用的几个参数如下所列: 1) -l 用于指定nc将处于侦听模式。指定该参数,则意味着nc被当作server,侦听并接受连接,而非向其它地址发起连接。 2) -p 暂未用到(老本的nc可能需要在端口号前加-p参数,下面测试环境是centos6.6,nc本是nc-1.84,未用到-p参数) 3) -s  指定发送数据的源IP地址,适用于多网卡机  4) -u  指定nc使用UDP协议,默认为TCP 5) -v 输出交互或出错信息,新手调试时尤为有用 6)-w 超时秒数,后面跟数字  7)-z 表示zero,表示扫描时不发送任何数据       前期准备 准备两台机器,用于测试nc命令的用法 主机A:ip地址 10.0.1.161 主机B:ip地址 10.0.1.162   两台机器先安装nc和nmap的包 yum install nc -y yum install nmap -y 如果提示如下-bash: nc: command not found 表示没安装nc的包 ———————————————— 权声明:本文为CSDN博主「小毛毛2013」的原创文章,遵循 CC 4.0 BY-SA 权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/u012486730/article/details/82019996
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值