TestCocoon安装使用小记

 一、 TestCocoon介绍

TestCocoon官方主页可以通过Google搜索到。它是一款支持C++、c#的插桩工具,支持多种编译器,包括VC、Intel C++、GCC、G++等。并提供了执行结果显示的软件。

 

二、 基本流程

TestCocoon主要分为两个处理过程,插桩、结果展示。其中,插桩过程中会产生两个文件,一个是csmes文件,另一个是exe文件,csmes文件相当于一个描述信息文件,比如记录有哪些源码文件,以及某些exe输出信息代表什么含义等等,exe文件就是我们的可执行程序,是由插桩后代码生成的,通过运行该exe文件会生成一个记录执行过程的结果文件,csexe文件;当将csmes、csexe文件在结果浏览程序中打开后,就可以看到具体的覆盖率信息,代码的执行信息。

 

三、 TestCocoon的安装

我下载的版本是1.6.12,文件名为:TestCocoonSetup_1_6_12_x86.exe。

在安装该程序前,前确保VS已经安装成功。双击该安装程序,启动安装过程,安装过程中会弹出一个配置界面如下:

该配置页中,最关键的地方是选择IDE的类型,如果你的机子只装了一个版本的VS,那么这里应该是正确的,如果你安装了多个版本的VS,这里就需要你选择将要安装的IDE版本。

 

四、 简单使用

程序安装完成后,会在开始\程序菜单中添加TestCocoon菜单信息,首次使用我们需要首先运行菜单项Build Environment,这时会弹出多个环境选择,我选择的是VS2010项,这个部分与各位安装情况有关系,但问题应该不大。执行完成后,应该会进入如下界面状态:

这个时候输入cscl,会提示该命令的使用参数信息。

 

为了简单介绍,我写了一个简单的代码,代码如下:

#include <string>
#include <iostream>

int main(int argc, char* argv[])
{
          __coveragescanner_install(argv[0]);

        std::cout<<"Input X:";
        std::cin>>x;
 
        if(x<5)
                k=5;
        else if(x<10)
                 k=6;
        else
                  k=7;
  
         k = 8;
         return 0;
}

该该代码文件置于cscl所在目录下,运行命令cscl --cs-on --cs-branch 代码文件名称,命令完成后,生成csmes文件和exe文件,当前还有其它文件,不用关心,运行exe文件,生成csexe文件,至于如何展示结果信息,这里不做介绍。

 

五、 VS中使用TestCocoon

虽然命令行下可以完成所有的事情,但对于一个习惯了IDE的人来说,还是太复杂了。TestCocoon提供了VS2005、VS2008、VS2010的插件,设置完成后,只要在待处理的工程或工作区上直接Build即可,非常方便。

我机子安装了VS2008、VS2010两个版本,VS2008是中文版,VS2010是英文版本,安装结果显示VS2008安装失败,原因在TestCocoon官方论坛上有讨论,但我们去深究,VS2010安装非常顺利,但首次使用发现没有效果。

我的操作过程如下:

首先,打开工具菜单下代码覆盖设置对话框,点击确定开启插桩处理按钮;

然后,在工程上点击Build;

编译正常,但结果不对,运行exe文件后,没有csexe文件生成。所以需要插桩错误原因,我在Output窗口中看到很多提示,说某些参数不能被识别,所以忽略,这些参数恰恰都是TestCocoon中cscl使用参数, 所以我怀疑TestCocoon的cl没有被调用到,打开工程属性查看目录信息,发现TestCocoon下的cl路径确实被设置了,并且会优先查找,那是什么原因?原因不清,所以我就试着先去掉了再重新编译,发现和刚刚结果一样,这也更验证我的猜想了,我再一次将目录设置回去,再重新编译,奇迹发生了,编译一切正常了。

最后,我猜想原因可能是默认的那个设置没有真正对工程起作用,而重新设置后才真正起作用了。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Protobuf是一种高效的序列化协议,可以用于数据交换和数据存储。它的主要优势是大小小,速度快,可扩展性强。下面是使用Protobuf的一些小记: 1. 定义消息格式 首先,需要定义消息格式,以便Protobuf可以将数据序列化和反序列化。消息格式定义在.proto文件中,使用protobuf语言编写。例如,下面是一个简单的消息格式定义: ``` syntax = "proto3"; message Person { string name = 1; int32 age = 2; } ``` 这个消息格式定义了一个名为Person的消息,包含两个字段:name和age。 2. 生成代码 一旦消息格式定义好,就可以使用Protobuf编译器生成代码。编译器将根据消息格式定义生成相应的代码,包括消息类、序列化和反序列化方法等。可以使用以下命令生成代码: ``` protoc --java_out=. message.proto ``` 这将生成一个名为message.pb.java的Java类,该类包含Person消息的定义以及相关方法。 3. 序列化和反序列化 一旦生成了代码,就可以使用Protobuf序列化和反序列化数据。例如,下面是一个示例代码,将一个Person对象序列化为字节数组,并将其反序列化为另一个Person对象: ``` Person person = Person.newBuilder() .setName("Alice") .setAge(25) .build(); byte[] bytes = person.toByteArray(); Person deserializedPerson = Person.parseFrom(bytes); ``` 这个示例代码创建了一个Person对象,将其序列化为字节数组,然后将其反序列化为另一个Person对象。在这个过程中,Protobuf使用生成的代码执行序列化和反序列化操作。 以上是使用Protobuf的一些基本步骤和注意事项,希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值