澳门新浦京娱乐场网站-www.146.net-新浦京娱乐场官网
做最好的网站

net白盒测量检验,嵌入式平台组件白盒测验gcov

net白盒测量检验,嵌入式平台组件白盒测验gcov。相当久没写博客了,适逢其会这段时光空闲,做点记录

在嵌入式平台上接受了gtest白盒测量试验工具,覆盖了被测函数,不过不精通本身测量检验的作用怎么着,测施行覆盖率、函数覆盖率,分支覆盖率的多寡。

emma介绍

Ant之build.xml详解

Ant的概念 
或是有些读者并不总是什么是Ant以至入可使用它,但假使利用通过Linux系统得读者,应该知道make那个命令。当编写翻译Linux内核及部分软件的源程序时,通常要用这些命令。Make命令其实就是三个项目管理工科具,而Ant所达成效果与利益与此相符。像make,gnumake和nmake这一个编写翻译工具都有一定的瑕玷,但是Ant却战胜了那一个工具的毛病。最早Ant开采者在开荒跨平台的应用时,用样也是依据那个毛病对Ant做了越来越好的规划。 

Ant 与 makefile 
Makefile有生龙活虎部分不足之处,举个例子很两人都会遇上的可恶的Tab难点。最早的Ant开垦者多次重申”只是笔者在Tab前边加了贰个空格,所以自身的命令就不能够实行”。有局地工具在一定水平上消除了那一个标题,但如故有成都百货上千任何的难题。Ant则与平日依照命令的工具有所区别,它是Java类的恢宏。Ant运转需求的XML格式的文本不是Shell命令文件。它是由三个Project组成的,而一个Project又可分为可多target,target再细分又分为相当多task,每三个task都以透过四个得以完成特定接口的java类来成功的。 

Ant的优点 
Ant是Apache软件基金会JAKARTA目录中的二个子项目,它有以下的帮助和益处。跨平台性。Ant是存Java语言编写的,所示具有很好的跨平台性。操作简易。Ant是由多少个置于职责和可选职务组成的。Ant运营时索要二个XML文件(创设文件)。Ant通过调用target树,就能够实行种种task。各类task达成了一定接口对象。由于Ant营造文件时XML格式的文本,所以和易于有限支撑和书写,而且协会很清晰。Ant可以合二为风流倜傥到支付景况中。由于Ant的跨平台性和操作简易的性状,它超轻巧集成到有的支付情况中去。 

Ant 开发Ant的营造文件当开首三个新的项目时,首先应当编写Ant构建文件。创设文件定义了营造过程,并被组织开垦中种种人选择。Ant营造文件私下认可命名称叫build.xml,也足以取其余的名字。只可是在运营的时候把这些命名充任参数传给Ant。创设文件可以投身其余的任务。常常做法是坐落项目顶层目录中,那样能够保持项目标简洁和明晰。下边是多个超人的门类档次结构。 
(1) src存放文件。 
(2) class贮存编写翻译后的文书。 
(3) lib存放第三方JA奔驰M级包。 
(4) dist寄存打包,发表之后的代码。 
Ant创设文件是XML文件。每一种构建文件定义三个唯生龙活虎的花色(Project元素)。每种品种下得以定义比相当多指标(target成分),那几个目的之间能够有依附关系。当实践那类目标时,需求实施他们所借助的靶子。每种指标中可以定义八个职责,目的中还定义了所要实行的天职体系。Ant在塑造目的时必需调用所定义的职责。任务定义了Ant实际试行的一声令下。Ant中的任务可以为3类。 
(1) 大旨职务。宗旨职务是Ant自带的职务。 
(2) 可选任务。可选职责实来自第三方的天职,由此需求叁个附加的JAEvoque文件。 
(3) 客户自定义的职务。顾客自定义的任务实顾客自身开荒的天职。 

1.<project>标签 
各类营造文件对应一个品种。<project>标签时创设文件的根标签。它能够有多少个内在属性,有如代码中所示,其各类属性的含义分别如下。 
(1) default代表暗中同意的运行指标,那天性情是必得的。 
(2) basedir代表项指标规范目录。 
(3) name代表项目名。 
(4) description表示项目标陈说。 
各种构建文件都对应于三个品类,然而大型项目常常包罗多量的子项目,每叁个子项目都能够有谈得来的创设文件。 

2.<target>标签 
一个品类标签下能够有二个或八个target标签。三个target标签能够依据其余的target标签。比方,有三个target用于编写翻译程序,另二个target用于声称可执行文件。在扭转可推行文件此前必得先编写翻译该文件,因策可实施文件的target信任于编写翻译程序的target。Target的具备属性如下。 
澳门新浦京娱乐场网站,(1) name表示阐明,那特特性是必需的。 
(2) depends表示信任的靶子。 
(3) if表示仅当属性设置时才实行。 
(4) unless表示当属性未有安装时才实践。 
(5) description表示项目标叙说。 
Ant的depends属性钦命了target的施行各种。Ant会根据depends属性中target现身顺序依次试行各种target。在实施此前,首先要求推行它所依附的target。程序中的名称叫run的target的depends属性compile,而名为compile的target的depends属性是prepare,所以这多少个target实践的逐个是prepare->compile->run。三个target只好被奉行一回,就算有多少个target信任于它。若无if或unless属性,target总会被实行。 

3.<mkdir>标签 
该标签用于创建一个目录,它有一个性能dir用来钦定所创制的目录名,其代码如下:<mkdir dir=”${class.root}”/>通过上述代码就成立了贰个索引,这些目录已经被近年来的property标签所内定。 

4.<jar>标签 
该标签用来生成三个JALAND文件,其属性如下。 
(1) destfile表示JAR文件名。 
(2) basedir代表被归档的文书名。 
(3) includes表示别归档的文件情势。 
(4) exchudes表示被破除的公文形式。 

5.<javac>标签 
该标签用于编写翻译三个或豆蔻梢头组java文件,其质量如下: 
(1).srcdir表示源程序的目录。 
(2).destdir表示class文件的输出目录。 
(3).include代表被编写翻译的公文的格局。 
(4).excludes表示被扫除的文本的方式。 
(5).classpath代表所选择的类路径。 
(6).debug表示包涵的调节和测验音讯。 
(7).optimize表示是还是不是选用优化。 
(8).verbose 代表提供详实的输出音讯。 
(9).fileonerror表示当碰到错误就机关终止。 

6.<java>标签 
该标签用来实施编写翻译生成的.class文件,其性质如下。 
(1).classname 代表将实行的类名。 
(2).jar代表饱含该类的JA福睿Sven件名。 
(3).classpath所代表用到的类路线。 
(4).fork代表在贰个新的虚构机中运维该类。 
(5).failonerror代表当现身谬误时自动终止。 
(6).output 表示输出文件。 
(7).append表示追加只怕覆盖私下认可文件。 

7.<delete>标签 
该标签用于删除三个文书或生机勃勃组文件,去属性如下: 
(1).file代表要刨除的文件。 
(2).dir表示要刨除的目录。 
(3).includeEmptyDirs 表示钦点是还是不是要刨除空目录,私下认可值是去除。 
(4).failonerror 代表钦点当蒙受错误是还是不是终止,暗许值是自行截止。 
(5).verbose代表钦赐是不是列出所删除的文书,暗中认可值为不列出。 

8.<copy>标签 
该标签用于文书或文件集的正片,其脾性如下。 
(1).file 代表源文件。 
(2).tofile 表示目的文件。 
(3).todir 表示目的目录。 
(4).overwrite 代表钦赐是或不是覆盖指标文件,默许值是不遮盖。 
(5).includeEmptyDirs 表示拟定是或不是拷贝空目录,暗中同意值为拷贝。 
(6).failonerror 表示钦命如目标未有意识是还是不是自动终止,暗中同意值是终止。 
(7).verbose 表示制订是还是不是出示详细消息,私下认可值不出示。 

Ant的数据类型 
在创设文件中为了标识文件或文件组,平时要求动用数据类型。数据类型包涵在 
org.apache.tool.ant.types包中。下边简介创设文件中部分常用的数据类型。 

1. argument 类型 
由Ant创设文件调用的次第,能够经过<arg>元素向其传递命令行参数,如apply,exec和java职分均可负责嵌套<arg>成分,可感到各自的历程调用内定参数。以下是<arg>的富有属性。 
(1).values 是叁个发令参数。固然参数种有空格,但又想将它看做单身四个值,则应用此属性。 
(2).file代表二个参数的公文名。在构建文件中,此文件名相对于最近的劳作目录。 
(3).line代表用空格分隔的多少个参数列表。 
(4).path表示路线。 

2.ervironment 类型 
由Ant塑造文件调用的外界命令或程序,<env>元素制订了什么意况变量要传送给正在试行的系统命令,<env>成分得以承担以下属性。 
(1).file表示情况变量值得文件名。此文件名要被调换个方式二个相对路线。 
(2).path表示碰着变量的路径。Ant会将它调换为三个本土约定。 
(3).value 表示意况变量的二个间接变量。 
(4).key 表示碰着变量名。 
瞩目  file path 或 value只可以取叁个。 

3.filelist类型Filelist 是五个支撑命名的文本列表的数据类型,包罗在三个filelist类型中的文件不必然是存在的公文。以下是其抱有的习性。 
(1).dir是用来总计相对文件名的目录。 
(2).files 是用逗号分隔的公文名列表。 
(3).refid 是对某处定义的贰个<filelist>的援引。 
在意  dir 和 files 都以要求的,除非钦定了refid(这种状态下,dir和files都不容许采纳)。 

4.fileset类型 
Fileset 数据类型定义了后生可畏组文件,并常常表示为<fileset>成分。不过,好多ant职务营造形成了隐式的fileset,那注脚她们协助具备的fileset属性和嵌套成分。以下为fileset 的性情列表。 
(1).dir表示fileset 的基目录。 
(2).casesensitive的值假使为false,那么相配文件名时,fileset不是分别朗朗上口写的,其默认值为true。 
(3).defaultexcludes 用来显著是或不是利用暗中同意的湮灭方式,默感到true。 
(4).excludes 是用逗号分隔的急需派出的文书方式列表。 
(5).excludesfile 表示每行富含一个拔除格局的文书的文书名。 
(6).includes 是用逗号分隔的,供给满含的文书形式列表。 
(7).includesfile 表示每行包涵三个包含形式的文书名。 

5.patternset 类型 
Fileset 是对文本的分组,而patternset是对形式的分组,他们是密不可分相关的定义。<patternset>扶植4个属性:includes excludex includexfile 和 excludesfile,与fileset雷同。Patternset 还允许以下嵌套成分:include,exclude,includefile 和 excludesfile。 

6.filterset 类型 
Filterset定义了大器晚成组过滤器,这么些过滤器将要文件移动或复制时做到文件的公文替换。 
第意气风发性能如下: 
(1).begintoken 表示嵌套过滤器所搜索的标识,那是标识其开首的字符串。 
(2).endtoken表示嵌套过滤器所寻找的号子那是标记其得了的字符串。 
(3).id是过滤器的唯风度翩翩标记符。 
(4).refid是对营造文件中某处定义三个过滤器的引用。 

7.Path类型 
Path成分用来表示一个类路线,可是它还足以用来表示其他的门径。在用作揖个性情时,路经中的每一项用分号或冒号隔绝。在构建的时候,此分隔符将替代当前平新竹存有的门道分隔符,其颇有的属性如下。 
(1).location 代表二个文书或目录。Ant在里边将此扩充为三个相对路线。 
(2).refid 是对当前创设文件中某处定义的四个path的引用。 
(3).path表示多个文件或路线名列表。 

8.mapper类型 
Mapper类型定义了生机勃勃组输入文件轻风度翩翩组输出文件间的关系,其属性如下。 
(1).classname 表示完结mapper类的类名。当内置mapper不满意须要时,用于创设定制mapper。 
(2).classpath代表查找二个定制mapper时所用的档期的顺序路线。 
(3).classpathref是对某处定义的三个类路线的援用。 
(4).from属性的含义决意于所用的mapper。 
(5).to属性的含义决意于所用的mapper。 
(6).type属性的取值为identity,flatten glob merge  regexp  个中之后生可畏,它定义了意气风发旦用的内置mapper的门类。 

Ant 的运行 
设置好Ant并且安顿好门路之后,在指令行中切换成创设文件的目录,输入Ant命令就足以运作Ant.若未有一点名其余参数,Ant会在当前目录下查询build.xml文件。借使找到了就用该文件作为营造文件。要是选取了 –find 选项,Ant 就能在上司目录中找创设文件,直至到达文件系统得跟目录。尽管营造文件的名字不是build.xml ,则Ant运转的时候就能够运用 –buildfile file,这里file 钦点了要利用的创设文件的名号,示比如下: 
Ant如下表明了象征当前目录的营造文件为build.xml 运转 ant 实施暗中同意的靶子。 
Ant –buildfile  test.xml使用当前目录下的test.xml 文件运营Ant ,实行暗中认可的对象

 

 


便初阶研讨gcov那么些代码覆盖率工具是或不是利用,来检查白盒测验的意义,以致携带测验修改的大势。经过频频品尝和切磋,

什么是EMMA

<small>EMMA 是叁个开源、面向 Java代码覆盖率搜罗和报告的工具。它经过对编写翻译后的 Java 字节码文件举办插装,在测验试行进程中搜聚覆盖率音讯,并经过支撑各类表格格式对覆盖率结果举举办展览示。 EMMA 所接受的字节码插装不仅仅保险 EMMA 不会给源代码带来“脏代码”,还保证EMMA 脱身了源代码的封锁,那生机勃勃风味使 EMMA 应用于功用测验成为了说倒霉。</small>

前提:近来部门索要白盒测量试验的工具,在英特网也查找了比比较多素材,本国很罕见相符的资料(超级少集团.net代码举行白盒测验卡塔 尔(英语:State of Qatar),最终在国外(FQ卡塔尔国网址查找到了部分质地

在嵌入式平台上能够使用gcov那么些工具,可是操作微微复杂点。

emma的特点

<small>

  1. 百分百纯Java编写,不依赖与任何第三方库。
  2. 和其他代码覆盖率测量检验工具分裂,EMMA帮忙大型项目标集体开荒,各个开垦职员都得以从当中收益。
  3. EMMA通过对Class文件进行抓实以测量试验覆盖率,它提供了Offline和Fly二种格局,在Fly格局下,EMMA不纠正编写翻译后的Class文件,仅仅在Class文件被ClassLoader装载时才开展抓好。
  4. EMMA援助对类,方法,代码行和主题的分支语句的覆盖率测验,并提供了各个格式的告诉,包蕴纯文本,HTML和XML,全数的告知都得以进行详尽设置以获取定制报告。
  5. 行使EMMA时,无需获得源代码就可进展覆盖率测量试验,其余,EMMA还帮衬对全数jar文件测量检验。
  6. EMMA暗中同意提供了对Ant的融会,通过扩充EMMA还足以提供对Maven和Eclipse的支撑。
  7. 在差别的工具或测量试验运转中收获到的蒙蔽数据足以统黄金时代在协同
    </small>

白盒测验中的 条件覆盖、逻辑覆盖....这里就不表明了

 

EMMA工作原理

<small>
EMMA 是通过向 .class 文件中插入字节码的方式来追踪记录被周转代码消息的。
EMMA 协助三种方式:On the fly 和 Offline 方式。
On the fly 情势往加载的类中走入字节码,在程序运维中,用 EMMA 达成的classLoader 代替利用暗中认可的 Custom classLoader,动态加载类文件,并向类中参与一些总结测量试验的字节码,那样运维甘休后,测量检验数据也就经过这个一时参与的字节码分析出来。
Offline 形式在类被加载前,在编写翻译生成的class文件中投入字节码。
On the fly 方式相比较便利,弱点也比较鲜明,如它不能够为被 boot class loader 加载的类生成覆盖率报告,也不能为像 J2EE 容器这种自个儿有例外 class loader 的类生成覆盖率报告。
而maven只支持Offline模式</small>

用到的开源工具:Opencover、ReportGenerator(那五个开源工具就不在这介绍了,百度有介绍卡塔尔

条件需求:

注意

<small>
虽说相当轻便完结百分之百的测量试验覆盖率,可是并不可能保障全体掩没,因为EMMA不辅助决策覆盖和路线覆盖</small>

付出语言:C#

1、有被测组件的源代码

在maven中使用

<small>
maven中融为生龙活虎体了emma插件,只须要配置maven-surefire-plugin插件就能够。

  • 在pom.xml文件中加上信任:
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.8.1</version>
            <configuration>
                <skipTests>false</skipTests>
                <junitArtifactName>junit:junit</junitArtifactName>
                <includes>
                    <include>**/*Test.java</include>
                </includes>
                <excludes>
                    <exclude>**/*_Roo_*</exclude>
                </excludes>
            </configuration>
        </plugin>
    </plugins>
</build>

点名maven-surefire-plugin的本子为2.8.1,false不跳过测量试验,*/Test.java****只测验以Test.java为文件名结尾的文件,况且不测验/Roo文件名包括Roo的文件。更加的多的配备能够去查看maven-surefire-plugin的布局表明

计划成功后,reimport

  • 在终极实施:
    mvn emma:emma

第叁回实施暗许会去download maven的插件

澳门新浦京娱乐场网站 1

图1

实施到位后,要是显示BUILD SUCCESS 表达成功
同一时间在档期的顺序target目录下得以看看有报告生成,/target/site/,打开index.html即能够查阅

澳门新浦京娱乐场网站 2

图2

</small>

白盒测验范围:web站点、exe施行文书

2、对应平台的接力编写翻译器必得含有gcov效用

实例

<small>

public class emmaExm {
    private Logger logger = LoggerFactory.getLogger(emmaExm.class);
    public void publicTest(){
        logger.info("public method test...");
        for (int i = 0; i < 10; i  ) {
            privateTest();
            if(i==4){
                continue;
            }
            if(i==3){
                break;
            }
            if(i==5){
                protectedTest();
                return;
            }
        }
    }
    protected void protectedTest(){
        logger.info("protected method test....");
    }
    private void privateTest(){
        logger.info("private method test....");
    }
    public void printTest(){
        logger.info("print method test...");
    }
}

测量试验代码写好后,直接在极限再度实施mvn emma:emma,施行到位后,会变卦新的测量检验报告。</small>

运作OpenCover须要一密密麻麻参数,这里只表明几个首要的参数:

3、安装好lcov工具

转移的告诉

<small>报告中包含类覆盖率、方法覆盖率、块覆盖率以致行覆盖率

澳门新浦京娱乐场网站 3

图3

澳门新浦京娱乐场网站 4

图4

进去实际的类中能够看来未被实行到之处会被标识出来,黄色是覆盖的,紫褐是未覆盖的

澳门新浦京娱乐场网站 5

图5

-target:那是目的应用或劳务的路径(名称卡塔尔,这里指单元测量试验工具的路子,支持NUnit和MS Unit

4、相应的嵌入式设备

在maven中EMMA的干活步骤

  • 字节码插装并转移插装的元信息文件coverage.em

澳门新浦京娱乐场网站 6

图6

  • 运营测量检验
  • 每便当 JVM 截至时,内部存款和储蓄器中著录的实行消息将被破除并被封存到 “coverage.ec” 的文件中
    即converage-*.ec文件中保留的是覆盖率信息

澳门新浦京娱乐场网站 7

图7

  • 转换测量检验报告
    依据.em文件和.ec文件调换来html

澳门新浦京娱乐场网站 8

图8

</small>

-targetdir:目的目录的门路,若是target argument已经包涵了二个路线,那么这么些参数能够提供二个搜索pdb文件的可选路径

 

-targetargs:target参数内定的施用所要求的参数(编写翻译测量检验工程改换的贰个dll文件恐怕EXE文件路线)

使用gcov/lcov测验代码覆盖率,总共分为四步:

-output:输出XML文件的门道,若无提供就要当前目录下生成results.xml, 该公文将用于ReportGenerator生成可视化的覆盖率报告

1、在组件编写翻译中加多gcov编译参数,然后编写翻译debug版本,相同的时候生成gcno文件

ReportGenerator所须要的参数:

2、在gtest编译中使用增加编译参数的零部件

-reports:上述XML文件的路线

3、奉行生成的次序,生成代码覆盖文件gcda

-targetdir:生成报告的目录

4、使用lcov工具深入分析gcno和gcda文件,生成html报表文件

 

 

 string sExecShell = "{0} -register -target:"{1}" -output:{2} -targetdir:"{3}"";

   public void Exec(OpenCoverModel.WebModel model, LibClass.OpenCoverModel.GlobalModel globalModel)
        {
            TransfEvent("Web模式,执行站点"   model.Site);
            string sOutput = model.OutPut   "\"   model.Site;
            XMLEvent(sOutput   "\"   model.Site   ".xml");
            if (!Directory.Exists(sOutput))
            {
                Directory.CreateDirectory(sOutput);
            }
            string sShell = string.Format(sCmdFromat, globalModel.OpenCover, @"C:Program Files (x86)IIS Expressiisexpress.exe", model.TargetDir, model.Site, globalModel.ApplicationHost, globalModel.Register, sOutput   "\"   model.Site   ".xml");
            Thread thread = new Thread(ThreadExec);
            thread.IsBackground = true;
            thread.Start(sShell);

        }

下边详细表达三个步骤如何操作:

详尽代码能够下载附属类小零器件 

 

https://files.cnblogs.com/files/jhy55/CodeAnalysis-2.rar

1、在组件编写翻译中增添编写翻译参数

大家测验的是组件,文件方式是静态库(.a卡塔 尔(英语:State of Qatar)恐怕动态库(.so卡塔 尔(阿拉伯语:قطر‎。为了总计测量试验的代码覆盖率,大家必要在编写翻译的时候加多如下参数。

内需加上的编写翻译参数为:-fprofile-arcs -ftest-coverage;相同的时间增添参数对应的库lgcov

 

累计实现后,实行编写翻译。然后搜索,找到变化的后缀名字为gcno文件的话,则注解成功。

 

至关重要:gcno文件生成的门道,这些貌似是基于Makefile脚本钦定的分裂路子来分明的,偶尔与源代码在联合,有的时候与中档文件在联合。

           不过不管gcno的门径在何地,要切记这几个门路。后续有用的。

 

 

2、在gtest编写翻译中使用带gcov的组件

A、改过编译脚本,加多-lgcov 编写翻译参数

B、把施用的库文件替换为增多gcov编译参数的机件

(如何在嵌入式平桃园动用gtest,请参考 )

在实施以上命令之后会转换内定文件的数目(output卡塔 尔(阿拉伯语:قطر‎

3、推行gtest测量试验程序

   把编写翻译好的测量试验程序在相应的配备上实行测量试验,施行未有不当后,然后查看嵌入式设备的目录,到与生成gcno路线后生可畏致的目录下,查找gcda文件

   gcda文件转移路线为编写翻译时生成gcno的不二等秘书籍,但是gcno是在编译服务器上,gcda是在程序运营的嵌入式设备上。

 

由此ReportGenerator能够生成 html格式的可视化文档

4、使用lcov解析gcda和gcno文件

   把设备的gcda文件下载到编写翻译服务器,相同的时候把编写翻译时生成的gcno文件也复制到同叁个目录。

   对于日前名称意气风发致的文件,gcda和gcno文件必需在同一目录下。    

 

   要使用lcov工具,可以在 下载最新的本子。

   不过这一个工具不可能直接深入解析嵌入式平台产生的gcno和gcda格式的公文,须求更改一个地点。

   即那些工具暗许的是选拔linux系统自带的gcov,必要校正为运用交叉编写翻译器的gcov工具。

   改进的文件为:bin/geninfo 的,把本来的gcov改革为交叉编写翻译的gcov。

 澳门新浦京娱乐场网站 9

澳门新浦京娱乐场网站 10

 

改正产生,保存退出。

以使用的isi3518 交叉编写翻译器为例,推行上面包车型客车命令:

     a   /opt/lcov_test/hisi3518/lcov-1.9/bin/lcov -d . -t 'test' -o 'test.info' -b . -c

澳门新浦京娱乐场网站 11

 澳门新浦京娱乐场网站 12澳门新浦京娱乐场网站 13

     b   /opt/lcov_test/hisi3518/lcov-1.9/bin/genhtml -o result test.info

       澳门新浦京娱乐场网站 14

        澳门新浦京娱乐场网站 15

      见到上面包车型地铁升迁,表达试行成功了。把result文件夹下载到windows上,张开当中的index,就能够见见结果了。

     

科学普及难点:

1、geninfo: ERROR: …: reached unexpected end of file

 注意,lcov 最棒使用 1.9 及以上版本,不然或然遇到如下错误:

geninfo: ERROR: …: reached unexpected end of file

 

2、 gcov解决stamp mismatch with graph file

使用 hexdump -e '"%xn"' -s8 -n4 命令分别拆解深入分析 XXX.gcno和XXX.gcda文件

比如生成的码分化等,则证实gcno和gcda不是贰回编写翻译生成的,必要再行编译。

一声令下使用如下:

hexdump -e '"%xn"' -s8 -n4 dns_shell.gcno 

 

3、找不到源代码

在深入分析gcno和gcda时,要和源代码在一个服务器上,而且源代码的不二等秘书诀在生成gcno和gcda后

从没退换过。不然会提醒找不到源代码。

string sCmd = "{0} -reports:{1} -targetdir:{2}";

 

生成html之后,index.html为主入口

参考:

在探究中,上边包车型大巴链接有十分大的拔刀相助。表示感激。

 那么些参考中的第三步  gcov发生报告新闻: test.c.gcov  永不推行

 

先写到这里甘休吧!不符合规律依然描述不对的请报告

 

本文由澳门新浦京娱乐场网站发布于www.146.net,转载请注明出处:net白盒测量检验,嵌入式平台组件白盒测验gcov