Linux实验一:Linux环境及编程工具

目录

    • 一、实验目的
    • 二、实验内容
    • 三、参考代码
    • 四、实验步骤
      • 步骤1. 编辑源代码test1.c
      • 步骤2. 编译源代码test1.c
      • 步骤3. 调试test1
      • 步骤4. 重新编译运行test1.c
    • 五、实验结果
    • 六、实验总结


一、实验目的

1、掌握Linux C开发过程中的基本概念;
2、掌握如vim,GCC,GDB等开发工具的使用。

二、实验内容

  将参考代码录入到test1.c文件中,编译执行后发现结果与预期不一致,请使用GDB调试, 完成字符串反序输出功能。

三、参考代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int reverse_str(char *string);int main (void) {char string[]= "Linux C Tools : GCC and GDB";printf("The original string is %s \n", string);reverse_str(string);
}int reverse_str(char *str){char *new_str;int i,size;size = strlen(str);if((new_str=(char *) malloc (size + 1))==NULL){return -1;}for (i=0;i<size;i++)new_str[size-1]=str[i];new_str[size+1]=' ';printf("The reverse string is %s\n",new_str);free(new_str);return 0;
}

四、实验步骤

步骤1. 编辑源代码test1.c

mkdir test1
cd test1
vim test1.c

在这里插入图片描述

在这里插入图片描述

步骤2. 编译源代码test1.c

首先要安装GCC编译器:

yum install gcc

在这里插入图片描述

再进行编译:

gcc test1.c -o test1 -g

运行:

./test1

在这里插入图片描述

步骤3. 调试test1

gdb test1

(1)回顾调试的基本方法:跟踪语句执行过程,观察执行结果;

(2)设置断点的三种基本方法:
① b <line_number>
② b <line_number> if condition_expression
③ b <function_name>

调试,设置断点在21行和24行,并运行至21行和24行:

在这里插入图片描述

(3)查看中间输出结果:
① p <var>
② set print element 0
p <array_name>或<pointer>

说明:GDB中查看字符串变量值可通过“set print element 0”命令,一次性显示字符串所有内容;

(4)分析中间结果,修改22行语句为new_str[size - i-1] = str[i];

在这里插入图片描述

步骤4. 重新编译运行test1.c

gcc test1.c -o test1 -g
./test1

在这里插入图片描述

五、实验结果

最后正确的代码和运行结果如下:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>int reverse_str(char *string);int main (void) {char string[]= "Linux C Tools : GCC and GDB";printf("The original string is %s \n", string);reverse_str(string);
}int reverse_str(char *str){char *new_str;int i,size;size = strlen(str);if((new_str=(char *) malloc (size + 1))==NULL){return -1;}for (i=0;i<size;i++)new_str[size - i-1] = str[i];new_str[size+1]=' ';printf("The reverse string is %s\n",new_str);free(new_str);return 0;
}

在这里插入图片描述

六、实验总结

  本次实验,我学到了许多关于Linux环境的基础知识和常用工具的使用技巧,并进行了实际操作和练习。
  通过实验,我更加熟悉了Linux操作系统的基本结构、文件系统、用户管理等方面的知识,掌握了常用的命令行操作。在实验中,我学习了常用的编程工具,如文本编辑器(例如Vi/Vim)、编译器(例如GCC)、调试器(例如GDB)等。通过实验,我能够熟练地使用这些工具进行代码编辑、编译和调试。
  通过GCC,我学会了如何将C/C++源代码编译成可执行文件。掌握了编译命令的语法和参数选项,比如指定输出文件名、调试信息等。使用GCC编译C语言代码很简单,例如,只需在终端中输入gcc test1.c -o test1 -g。其中,test1是编译后生成的可执行文件的名称,test1.c是要编译的C源代码文件。通过这个命令,gcc会将C源代码编译为可执行文件,并将其命名为test1。GCC提供了丰富的调试支持,我学会了如何在编译时生成调试信息,并使用GDB进行程序调试。通过设置断点、查看变量和内存状态,我能够有效地找出程序中的问题并进行调试修复。
  总的来说,通过《Linux环境及编程工具》的学习和实验,我不仅对Linux操作系统有了更深入的理解,还掌握了许多实用的编程工具和技能,这些对我的日常工作和项目开发都具有很大的帮助。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/314395.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

tiktok如何影响用户行为的分析兼论快速数据分析的策略

tiktok如何影响用户行为的分析 快速数据分析的策略流程&#xff1a; 1.确定指标变量&#xff0c;也就确定了数据分析想要回答的问题。想回答不同的问题&#xff0c;就选择不同的指标变量。 变量筛选方法选出指标变量相关的变量&#xff1b; 针对筛选出的变量进行描述性分析和因…

汽车新智能图谱里:理解腾讯的AI TO B路径

将自身的C2B产品和产业理解充分AI化&#xff0c;在自身内部场景率先验证跑通后&#xff0c;进而释放给产业伙伴&#xff0c;对应到具体的需求痛点&#xff0c;一起打磨对应的行业AI模型。 这也恰是腾讯“实用”标签背后的AI产业路径。 作者|皮爷 出品|产业家 成本、性价…

目标检测——YOLOv6算法解读

论文&#xff1a;YOLOv6: A Single-Stage Object Detection Framework for Industrial Applications (2022.9.7) 作者&#xff1a;Chuyi Li, Lulu Li, Hongliang Jiang, Kaiheng Weng, Yifei Geng, Liang Li, Zaidan Ke, Qingyuan Li, Meng Cheng, Weiqiang Nie, Yiduo Li, Bo …

PyCharm 中的特殊标记

在使用 PyCharm 开发 Python 项目的时候&#xff0c;经常会有一些特殊的标记&#xff0c;有些是 IDE 提示的代码规范&#xff0c;有些则为了方便查找而自定义的标记。 我在之前写过一些关于异常捕获的文章&#xff1a;Python3 PyCharm 捕获异常报 Too broad exception clause …

科学高效备考AMC8和AMC10竞赛,吃透2000-2024年1850道真题和解析

如何在校内学习之余科学、有效地备考AMC8、AMC10美国数学竞赛&#xff1f;多做真题&#xff0c;吃透真题是科学有效的方法之一&#xff0c;通过做真题&#xff0c;可以帮助孩子找到真实竞赛的感觉&#xff0c;而且更加贴近比赛的内容&#xff0c;可以通过真题查漏补缺&#xff…

【CTF Crypto】CTFShow 萌新 密码3 Writeup(摩尔斯电码+培根密码)

萌新 密码3 3 题目名称&#xff1a;我想吃培根 题目描述&#xff1a; – — .-. … . …–.- … … …–.- -.-. — — .-… …–.- -… …- - …–.- -… .- -.-. — -. …–.- … … …–.- -.-. — — .-… . .-. …–.- – – -… -… – -… – -… – – – -… -… -……

服务器(AIX、Linux、UNIX)性能监视器工具【nmon】使用介绍

目录 ■nmon简介 1.安装 2.使用简介 3.使用&#xff08;具体使用的例子【CPU】【内存】&#xff09; 4.采集数据 5.查看log&#xff08;根据结果&#xff0c;生成报表&#xff09; 6.分析结果 7.设定任务计划&#xff08;Cron&#xff09;&#xff0c;每日执行 ■nmo…

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣&#xff0c;小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着&#xff0c;关键词、评分还有uv&#xff08;授权&#xff09;等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…

PostgreSQL的扩展(extensions)-常用的扩展之pg_repack

PostgreSQL的扩展&#xff08;extensions&#xff09;-常用的扩展之pg_repack pg_repack 是一款非常有用的 PostgreSQL 扩展工具&#xff0c;它能够重新打包&#xff08;repack&#xff09;表和索引以回收空间并减少碎片&#xff0c;而且在这个过程中不会锁定表&#xff0c;允…

【pycharm】调试模式中四个常用按钮介绍

【pycharm】调试模式中四个常用按钮介绍 在 PyCharm 的调试模式中&#xff0c;有四个常用的按钮&#xff0c;它们的功能如下&#xff1a; Step Over (F8)&#xff1a;单步执行&#xff0c;但在遇到函数调用时&#xff0c;不会进入函数内部&#xff0c;而是将整个函数作为一步执…

Laravel 6 - 第十一章 中间件

​ 文章目录 Laravel 6 - 第一章 简介 Laravel 6 - 第二章 项目搭建 Laravel 6 - 第三章 文件夹结构 Laravel 6 - 第四章 生命周期 Laravel 6 - 第五章 控制反转和依赖注入 Laravel 6 - 第六章 服务容器 Laravel 6 - 第七章 服务提供者 Laravel 6 - 第八章 门面 Laravel 6 - …

采购数据分析驾驶舱分享,照着它抄作业

今天我们来看一张采购管理驾驶舱。这是一张充分运用了多种数据可视化图表、智能分析功能&#xff0c;从物料和供应商的角度全面分析采购情况的BI数据可视化报表&#xff0c;主要分为三个部分&#xff0c;接下来就分部分来了解一下。 第一部分&#xff1a;关键指标计算及颜色预…

C语言-数据在内存中的存储

我们再之前的篇目中有提到整数在内存中的存储&#xff0c;那么本篇文章将会为大家带来更为详细的内容&#xff0c;包括大小端字节序&#xff0c;以及浮点数如何在内存中存储。 目录 1.整数在内存中的存储 2.大小端字节序和字节序判断 2.1什么是大小端&#xff1f; 2.2为什…

第三篇:Python编程基础:掌握核心语法与开发技巧

Python编程基础&#xff1a;掌握核心语法与开发技巧 1 引言 在这个信息化迅速蔓延的世界中&#xff0c;Python语言如同钥匙一般开启了通往各种可能性的大门。无论你是数据科学家、网络工程师、机器学习专家&#xff0c;还是仅仅对自动化办公感兴趣的办公室人员&#xff0c;Pyt…

Linux 调度优先级

Linux中的每个任务都有其优先级。这个优先级的范围从-20到19。优先级越低&#xff08;-20&#xff09;&#xff0c;分配 给任务的CPU时间就越多。默认的优先级是0。 并非所有的任务都需要使用相同的优先级。交互式应用要求快速响应&#xff0c;通过 crontab 运行的后台…

Feign负载均衡

Feign负载均衡 概念总结 工程构建Feign通过接口的方法调用Rest服务&#xff08;之前是Ribbon——RestTemplate&#xff09; 概念 官网解释: http://projects.spring.io/spring-cloud/spring-cloud.html#spring-cloud-feign Feign是一个声明式WebService客户端。使用Feign能让…

实验7 利用三层交换机实现VLAN间路由

实验7 利用三层交换机实现VLAN间路由 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置1.实验拓扑2.设备编址 五、 实验步骤1.配置IP地址2.交换机初始配置3.测试连通性4.配置S1的三层接口 一、 原理描述 在“单臂路由”方式实现VLAN间路由时&#…

Kafka 生产者应用解析

目录 1、生产者消息发送流程 1.1、发送原理 2、异步发送 API 2.1、普通异步发送 2.2、带回调函数的异步发送 3、同步发送 API 4、生产者分区 4.1、分区的优势 4.2、生产者发送消息的分区策略 示例1&#xff1a;将数据发往指定 partition 示例2&#xff1a;有 key 的…

playwright 使用

pip install playwright 是一个命令&#xff0c;用于通过 Python 的包管理工具 pip 安装 Playwright 库。Playwright 是一个用于端到端网页测试的库&#xff0c;支持多种浏览器&#xff0c;包括 Chromium、Firefox 和 WebKit。 执行 pip install playwright 命令后&#xff0c…

Android使用ProtoBuf 适配 gradle7.5 gradle8.0

ProtoBuf 适配 Gradle7.5 gradle-wrapper.properties 配置 distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zipProject&#xff1a;build.gradle: plugins {id com.android.application version 7.4.2 apply falseid com.android.library versio…