【www.hzclsc.cn--热门资讯】
首先给大家介绍一下gcov-dump
1. 序
gcov 的相关文件 .gcda(data 文件 )/.gcno(note 文件 ) 文件是以二进制方式写入的 (fwrite) ,普通编辑文件打开看到的只是乱码,用 ultraedit 打开也只是看到十六进制的数据。如果你了解 .gcda/.gcno 的文件格式 ( 可以参考 Linux 平台代码覆盖率测试工具 GCOV 相关文件分析 ) ,看起来会好些;否则,看起来便不知所云,除非有一种工具或程序能将其内容按照有意义的 ( 文件 ) 格式 dump 出来,如果再加上一些提示,就更好了。
——这就是 gcov-dump 程序。
gcov-dump 是一个 dump 程序,输入是一个 gcov 的文件,或者 .gcda ,即 gcov 的 data 文件;或者 .gcno ,即 gcov 的 note 文件。
有了 Linux 平台代码覆盖率测试工具 GCOV 相关文件分析 和 Linux 平台代码覆盖率测试 -GCC 如何编译生成 gcov/gcov-dump 程序及其 bug 分析 这两篇文章做基础, gcov-dump 的原理就很好理解了。本文不予详细叙述,只做一些代码注释和简单记录,便于用到的时候查询。 好头脑赶不上烂笔头嘛。
本文例子所用的 gcov-dump 程序来自 Linux 平台代码覆盖率测试 - 从 GCC 源码中抽取 gcov/gcov-dump 程序 一文。
2. gcov-dump 原理分析
2.1 gcov-dump 程序结构
图中实线表示调用,实线旁边的数字表示 tag 值。 tag 的值请参考 gcov_io.h 文件,或者 Linux 平台代码覆盖率测试工具 GCOV 相关文件分析 。
12345678910111213141516在本页阅读全文 本文导航 第1页: 首页 第2页: dump_file 函数分析 第3页: 处理各种 tag 的 callback 定义 第4页: 基本读取函数 gcov_read_words 第5页: 调用 gcov_allocate 第6页: 分配空间函数 gcov_allocate 第7页: 重要数据结构 gcov_var 第8页: 处理 tag 的 callback 分析 第9页: ARCS tag: tag_arcs() 函数 第10页: COUNTER tag: tag_counters() 函数 第11页: 总结 第12页: dump_file 函数分析 第13页: 处理各种 tag 的 callback 定义 第14页: 分配空间函数 gcov_allocate 第15页: BLOCKS tag: tag_blocks() 函数 第16页: LINES tag: tag_lines() 函数
本文来源:http://www.hzclsc.cn/news/44139.html