C语言学习笔记系列(6)编译调试
在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信息请参照帮助文档。
