Linux中的vi编译器与C程序的编译和调试

vi编译器

  1. 进入vi
    在这里插入图片描述
  2. 建立一个文件,如file.c,进入插入方式,输入一个C语言程序的各行内容,故意制造基础错误。最后,将文件存盘。回到shell状态下。
    在这里插入图片描述
  3. 运行gcc file.c –o myfile,编译该文件会发现错误提示,理解其含义。
    错误提示含义:错误在}之前漏了;输出函数输错应printf
    在这里插入图片描述
  4. 重新进入vi,对该文件修改。然后存盘,退出vi。重新编译该文件。如果编译通过,可以用./myfile运行该文件。
    5.
    在这里插入图片描述
  5. 运行man date > file10,然后 vi file10。
    使用x,dd等命令删除某些文本行。
    在这里插入图片描述
    X命令一个一个字符删除
    在这里插入图片描述
    dd命令一行一行删除
    在这里插入图片描述
    使用u命令复制此前的情况。
    在这里插入图片描述
    使用c,r,s等命令修改文本内容。
    C命令
    在这里插入图片描述
    R命令
    在这里插入图片描述
    S命令
    在这里插入图片描述
    使用检索命令进行给定模式的检索。
    在这里插入图片描述

C程序的编译和调试

  1. 改写例6.1,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l。
    在这里插入图片描述
    -I进行编译,生成目标文件Imengl存放在/home/rehat目录下,-I命令从目录中搜寻进行编译
    在这里插入图片描述
    -D进行编译,宏定义D=1,可执行文件Dmengl中没有这个宏判断,不输出结果
    在这里插入图片描述
    -E进行编译,gcc –E sq.c直接在命令行窗口中输出预处理后的代码
    在这里插入图片描述
    -c进行编译,生成目标文件mfile.o,sq.o
    在这里插入图片描述
    在这里插入图片描述
    -o进行编译,生成可执行文件放在mengl文件中,最后执行mengl
    在这里插入图片描述
    在这里插入图片描述
    -l进行编译,连接标准C语言函数库编译生成可执行文件lmengl
    在这里插入图片描述
    在这里插入图片描述
    2.对下面程序进行调试
#include<stdio.h>
#include<stdlib.h>
int main(int argc, char **argv)
{
char *p;
int i;
p= malloc(30); 
strcpy(p,"not 30 bytes");
printf("p=<%s>\n",p);
if(argc==2){
if(strcmp(argv[1],"-b") ==0) 
p[50]='a'; 
else if(strcmp(argv[1],"-f")==0){
free(p);
p[0]='b';
}
}
/*free(p); */
return 0;
}


在这里插入图片描述
在这里插入图片描述
编译badprog.c,-g命令调试可执行文件,有一部份代码没执行,出错
在这里插入图片描述
在这里插入图片描述
利用gdb调试,查看错误信息,没找到错误
在这里插入图片描述
利用list显示错误信息
在这里插入图片描述
设置断点,运行程序
在这里插入图片描述
在这里插入图片描述
修改程序,再执行
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 5
    点赞
  • 60
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值