在sco unix下编程大多离不开C语言,即使是数据库应用也有很多是与c搭配使用的,例如informix esql/c 就可以在c语言中嵌入sql 语句。很多人认为在unix下写程序是件很痛苦的事情,其中一个很重要原因是不知道在unix下怎样调试程序。其实在sco unix源码调试器是dbxtra或dbXtra,linux下是gdb。它们类似turbo c的调试器,可以跟踪源码变量。在unix 下调试程序有如下传统方法
一、在要调试语句之前,输出要调试的变量,利用printf()函数。
二、写日志文件,把结果输出到文件中避免屏幕混乱,利用fprintf()函数。
三、利用sco 内置调试器dbxtra或dbXtra。
dbxtra 适用字符界面,在sco unix的图形界面用dbXtra。(编按:请注意大小写)
以下是dbxtra基本命令:
c cont 在断点后继续执行
d delete 删除所设断点
h help 帮助
e edit 编辑源程序
n next 源程序区的内容向下翻一屏。
p print 显示变量
q quit 退出dbxtra
r run 运行程序,直到遇上设置的断点
rr rerun 再次运行
s step 单步运行
st stop 设置断点
j status 显示当前断点
t where 显示当前状态,列出所有设置的变量值
di display 开显示窗,用于查看变量
ud undisplay 删除显示窗的条目
f forward 源程序区的内容向上 翻一屏。
B backward 源程序区的内容向下 翻一屏。
Stopi stop inst 设置断点
tracei trace inst跟踪子程序
dbxtra [options] [objectfile ]
dbxtra 在启动时有个参数-Idir值得一提.我们在编写一个较大程序的时候,通常源程序和编译生成的可执行文件都放在不同的目录中,这样便于管理。默认dbxtra将在可执行文件所在的目录下找匹配c的源程序。当我们启动时,指定-I参数,dbxtra就会到我们指定的目录下找匹配的c程序。 例如:
dbxtra -I"\work\c" program1
源程序在用cc编译时要带上-g 参数,这样是加上符号表等调试信息。只有这样编译过的文件,dbxtra才可以调试。调试信息使源代码和机器码关联。
下面这个C程序输出结果和我们的预想结果不一样,说明某些地方有错误。我们用调试器来调试它:
程序一:
t.c
main()
{
int i=10 ,*p1;
float j=1.5,*p2;
p1=&i
p2=&j
p2=p1;
printf("%d,%d\n",*p1,*p2);
}
首先带上-g参数编译 cc -g -o t t.c
启动调试器 dbxtra t
屏幕显示:
1.main()
2.{
3. int i=10 ,*p1;
4. float j=1.5,*p2;
5. p1=&i
6. p2=&j
7. p2=p1;
| 论坛热门帖子: | [lch203] 写得蛮好的linux学习笔记(10-21) [黑马制造] 学习java的30个目标(10-19) [笑傲股林] 做测试半年了,有点迷茫,应该再学些什么提高自己的测试水平和测试能力呢?(10-19) [udp8589] 大家用google的来吱一声? 用百度的~~也来报道下?(10-18) [沂偌掳兆] 本人总结的一些认为C++比较经典的书籍,希望对大家有用(10-18) |
| TAG标签: | 调试 技术 开发 系统 dbxtra 程序 p2 p1 我们 执行 变量 |
注册
个人空间
