有用的C语言工具

    本节包括了一些你应该直到地有用的C语言工具列表,并描述了他们的作用,从表1至表4。本节提供一个易于阅读的总结材料,告诉你这些工具中的每一个是用来干什么的以及可以用在那里找到他们。在学完这个总结材料之后,请接着阅读每个工具的主文档,并在几个不同的a.out中运行每个工具。可以使用”Hello World”程序,也可以使用其他较大的程序。

请仔细研究这些工具,如果你花15分钟时间对每个工具进行一下试验,将来在解决BUG问题是,它将会大大节约你的时间。

表1  用于检查源代码的工具

工具

位于何处

所做工作

cb

随编译器附带

C程序美化器,在源文件中运行这个过滤器,可以使源文件有标准的布局和缩进格式。来自Berkeley

indent

 

与cb作用相同,来自AT&T

cdecl

 

分析C语言的声明

cscope

随编译器附带

一个基于ASCII码C程序的交互式浏览器。用于检查头文件修改的效果。

ctags

/usr/bin

创建一个标签文件,供vim/vi编辑器使用。标签文件能加快检查程序源文件的速度,方法是维护一个表,里面有绝大多数对象的位置

lint

随编译器附带

C程序检查器

cflow

随编译器附带

打印程序中调用者/被调用者的关系

sccs

/usr/ccs/bin

源代码版本控制系统

vgrind

/usr/bin

格式器,用于打印漂亮的C列表

 

医生可以使用X射线、声谱仪、内窥镜和探查术查看病人的身体内部。上面这些工具就是软件世界的X射线。

      

       表2   用于检查可执行文件的工具

工具

位于何处

所做工作

dis

/usr/ccs/bin

目标代码反汇编工具

dump -Lv

/usr/ccs/bin

打印动态链接信息

ldd

/usr/bin

打印文件所需的动态

nm

/usr/ccs/bin

打印目标文件的符号表

strings

/usr/bin

查看嵌入于二进制文件中的字符串。用于查看二进制文件可能产生的错误信息、内置文件名和(有时候)符号名或版本和版权信息

sum

/usr/bin

打印文件的校验和与程序块计数。回答这样的问题:“这些可执行文件是同一版本吗?”“传输是否成功?”

 

       表3   帮助调试的工具

工具

位于何处

所做工作

truss

/usr/bin

Trace的SVr4版本,这个工具打印可执行文件所进行的系统调用。它可用于查看二进制文件正在干什么,为什么阻塞或失败。这将非常有用

ps

/usr/bin

显示进程的特征

ctrace

随编译器附带

修改你的源文件,文件打印时按行打印。是一个对小程序非常有用的工具

debugger

随编译器附带

交互式调试器

file

/usr/bin

告诉你一个文件包含的内容(如可执行文件、数据、ASCII、shell、script、archive等)

 

         表4   性能优化辅助工具

工具

位于何处

所做工作

collector

随编译器附带

(SunOS 独有) 在调试器控制下收集运行时性能数据

analyzer

随编译器附带

(SunOS 独有) 分析已收集的性能数据

gprof

/usr/ccs/bin

显示调用图配置数据(确定计算密集的函数)

prof

/usr/ccs/bin

显示每个程序所消耗时间的百分比

gcov

随编译器附带

显示每条语句执行次数的计数(确定一个函数中计算密集循环)

time

/usr/bin/time

显示程序所使用的实际时间和CPU时间

 

       如果你工作于操作系统的内核模式,则无法使用绝大多数运行时工具,因为内核并不像用户进程那样运行。可以使用编译时工具Lint,但除此之外我们只能使用石刀和燧斧了;将有序模式放入内存中,看看他们何时被覆盖(最常使用的两个是十六进制常量deadbeef和abadcafe)       ,使用printf或类似的函数并记录跟踪信息。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值