C语言学习笔记系列(6)编译调试

来源:互联网 发布:知乎印度十大著名景点 编辑:程序博客网 时间:2024/04/30 09:33

  在Solaris上,编译工具为Sun Studio自带的cc,调试可以使用dbx,需要根据机器的实际环境来确定。关于cc和dbx命令,其参数比较多,想要使用明白最好还是查找一些详细的资料,网上有很多相关的资料,另外还可以通过man命令查看系统自带的帮助文档。这里仅列举几个简单的例子来说明不同情况下如何编译代码。
1:直接编译成可执行文件 
cc -g -o mytest mytest.c
g:表示该程序可以用dbx调试。
o:后面跟生成的目标文件
mytest:生成的可执行程序
mytest.c:源代码
2:编译成目标文件(.o)
cc -c mytest.c
该命令只会生成mytest.o而不会生成可执行文件。
3:生成库文件
cc -g -o libtest.so *.o
o:后面跟生成的库文件

为了避免经常性地输入长串的编译命令,可以把这些命令组织到Makefile文件中,关于Makefile文件的做成规则,可以参照/usr/share/lib/make/make-rules。

下面说一下另外一个命令:lint - C程序检查器。
使用方法: lint [option] file
具体参数的使用可以查看帮助文档,这里还是只列举常见的使用。
例如:lint -Nlevel=3 iotest.c把检查级别设定为3级。
lint会对下面这些方面(包含但不限于)进行检查:
o 无法运行到的代码
o 无法进入的循环
o 声明但未使用的变量
o 结果固定的表达式
o 函数没有声明
如果编译可执行程序的时候办好参数-g,那么可执行程序可以用dbx进行调试。方法有两种:dbx exefile 或者dbx – pid。
dbx状态下可使用命令:
run:运行要调试的程序。 where:显示现在代码的执行位置。 print:打印变量的值。
stop at:后面跟行号,表示设定断点。step:进入函数跟踪。step up:退出当前函数的跟踪。
assign:给变量赋值,命令后面跟赋值表达式。
更详细的dbx信息请参照帮助文档。