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

vi编译器

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

C程序的编译和调试

  1. 改写例6.1,使用下列选项对它进行编译:-I,-D,-E,-c,-o,-l。
    Linux中的vi编译器与C程序的编译和调试_第13张图片
    -I进行编译,生成目标文件Imengl存放在/home/rehat目录下,-I命令从目录中搜寻进行编译
    在这里插入图片描述
    -D进行编译,宏定义D=1,可执行文件Dmengl中没有这个宏判断,不输出结果
    在这里插入图片描述
    -E进行编译,gcc –E sq.c直接在命令行窗口中输出预处理后的代码
    Linux中的vi编译器与C程序的编译和调试_第14张图片
    -c进行编译,生成目标文件mfile.o,sq.o
    在这里插入图片描述
    Linux中的vi编译器与C程序的编译和调试_第15张图片
    -o进行编译,生成可执行文件放在mengl文件中,最后执行mengl
    在这里插入图片描述
    在这里插入图片描述
    -l进行编译,连接标准C语言函数库编译生成可执行文件lmengl
    在这里插入图片描述
    在这里插入图片描述
    2.对下面程序进行调试
#include
#include
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;
}


在这里插入图片描述
Linux中的vi编译器与C程序的编译和调试_第16张图片
编译badprog.c,-g命令调试可执行文件,有一部份代码没执行,出错
Linux中的vi编译器与C程序的编译和调试_第17张图片
Linux中的vi编译器与C程序的编译和调试_第18张图片
利用gdb调试,查看错误信息,没找到错误
Linux中的vi编译器与C程序的编译和调试_第19张图片
利用list显示错误信息
Linux中的vi编译器与C程序的编译和调试_第20张图片
设置断点,运行程序
Linux中的vi编译器与C程序的编译和调试_第21张图片
Linux中的vi编译器与C程序的编译和调试_第22张图片
修改程序,再执行
Linux中的vi编译器与C程序的编译和调试_第23张图片
Linux中的vi编译器与C程序的编译和调试_第24张图片
在这里插入图片描述

你可能感兴趣的:(Linux)