一个有目标,为自己的未来努力奋斗的人
分类: LINUX
2010-10-07 22:13:39
有用的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或类似的函数并记录跟踪信息。
chinaunix网友2010-10-10 19:24:05
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com