# 第二周课堂实践以及MyOD

时间:2023-03-09 04:14:13
# 第二周课堂实践以及MyOD

第二周课堂实践以及MyOD

之前使用的虚拟机出现问题被我删掉了,开始学着使用Mac系统自带的终端。在课堂上出现了问题,询问王雄老师也没有解决,课下先使用了实验楼环境进行实验,后来又在Mac重新进行了尝试。

测试3——gdb测试

  1. 用gcc -g编译vi输入的代码
  2. 在main函数中设置一个行断点
  3. 在main函数增加一个空循环,循环次数为自己学号后4位,设置一个约为学号一半的条件断点
  4. 提交调试过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 一开始在课堂上测试3未能做出来,耗费了太多时间导致4、5也没有做。在实验楼测试结果如下,出现了红线部分错误。

    # 第二周课堂实践以及MyOD

  • 在Mac出现这样的错误,百度后了解到mac系统的gdb需要自己创建证书对gdb证书签名。(跟着教程走后再次尝试也出现了相同错误,这次就不知道原因了。)

    # 第二周课堂实践以及MyOD

测试4——静态库的测试

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.a静态库?main.c如何使用mymath.a?
  2. 提交静态库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 在实验楼环境出现了如下错误,猜测可能与导致测试3错误的原因有关。

    # 第二周课堂实践以及MyOD

  • Mac系统下重新试验成功。

    # 第二周课堂实践以及MyOD

测试5——共享库

  1. 除了main.c外,其他4个模块(add.c sub.c mul.c div.c)的源代码不想给别人,如何制作一个mymath.so共享库?main.c如何使用mymath.so?
  2. 提交共享库生成和调用过程截图(一定包含条件断点的),要全屏,包含自己的学号信息
  • 在实验楼环境出现了如下错误,猜测可能与导致测试3错误的原因有关。

    # 第二周课堂实践以及MyOD

  • Mac系统下重新试验成功。

    # 第二周课堂实践以及MyOD

测试6——Makefile

  1. 写出编译上面vi编辑代码的makefile,编译出来的目标文件为testmymath, 只用显式规则就可以.

  2. 提交Make过程截图,要全屏,包含自己的学号信息

  • Mac系统下试验成功。

    # 第二周课堂实践以及MyOD

MyOD

  1. 复习c文件处理内容
  2. 编写myod.c 用myod XXX实现Linux下od -tx -tc XXX的功能
  3. main与其他分开,制作静态库和动态库
  4. 编写Makefile
  5. 提交测试代码和运行结果截图, 提交调试过程截图,要全屏,包含自己的学号信息
  6. 在博客园发表一篇博客,重点写遇到的问题和解决过程
  • MyOD编写成功

    # 第二周课堂实践以及MyOD
main.c

#include "head.h"
#include<stdio.h>
#include<stdlib.h>
void main()
{
char filename[50];
printf("input filename: ");
scanf("%s",filename);
ascii(filename);
Hexa(filename);
}
ascii.c

#include "head.h"
#include<stdio.h>
#include<stdlib.h>
void ascii(char *filename)
{
FILE *fp;
char ch;
fp=fopen(filename,"r");
ch=fgetc(fp);
printf("ascii: \n");
while(ch != EOF)
{
if(ch=='\n')
{
printf("\n");
}
else
{
printf("%d, ",ch);
}
ch=fgetc(fp);
}
}
Hexa.c

#include "head.h"
#include<stdio.h>
#include<stdlib.h>
void Hexa(char *filename)
{
FILE *fp;
char ch;
printf("Hexadecimal numbers: \n");
fp=fopen(filename,"r");
ch=fgetc(fp);
while(ch != EOF)
{
if(ch=='\n')
{
printf("\n");
}
else
{
printf("%x, ",ch);
}
ch=fgetc(fp);
}
fclose(fp);
}
  • 静态库:在Mac系统下出现如下问题,询问同学、查阅资料后也没有得到解决

    # 第二周课堂实践以及MyOD

  • 动态库:

    # 第二周课堂实践以及MyOD