【vim文本编辑器gcc编译器gdb调试器】

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 一、vim
    • vim安装
    • vim常用快捷键
    • vim使用
    • vimtutor zh文档
  • 二、gcc编译器
    • 安装gcc工具
    • 编译源代码
  • 三、gdb调试器
    • gdb安装
    • gdb常用指令
    • gdb简单上手使用
    • gdb的单步调试功能
  • 总结


一、vim

vim是vi发展出来的一个文本编辑器,具有代码补全、快速跳转、查找等功能,在linux中被广泛使用。
vim官方网站(https://www.vim.org/)

vim安装

sudo apt-get install vim

vim常用快捷键

在这里插入图片描述

vim xxx 进入(正常模式)
i、a、o键 (输入模式)
esc(回到正常模式)
:键 (命令模式)
:wq (保存、退出)

Nodepad可以使用CTRL+F实现查找、替换功能

vim使用

创建工作空间目录workspace/src

在终端中打开上述工作空间目录;
创建.c源码文件vim test.c
按键i 进行编辑

#include <stdio.h>int main(void)
{
printf("hello world");return 0;
}

ESC 回到正常模式
:wq 保存、退出

vimtutor zh文档

输入vimtutor zh查看中文文档
里面有详细的vim教学,在练习中记忆并熟练掌握常用操作;

二、gcc编译器

gcc(GNU Compiler Collection)是GNU(GNU’s Not Unix)开源项目的编译器套件。gcc的初衷是为GNU操作系统专门编写的一款编译器,用于编译C代码。现如今已经拓展为可以编译C++、Java、Objective-C等多种编程语言的集合。gcc本身也遵循GPL发行许可证,linux就是基于gcc搭建的编译系统。

gcc官方网站可以参考https://gcc.gnu.org/

安装gcc工具

sudo apt-get install build-essential

查看是否安装成功
gcc -v

编译源代码

使用vim打开前文的test.c文件
vim test.c

gcc -o bin test.c

查看文件列表
ls -la

运行可执行文件
./bin

如果想知道调试信息,可以加上-g的参数
gcc -o bin test.c -g

对比不加-g参数时文件的大小
gcc -o bin test.c
ls -lh
加入-g参数,文件占据的存储空间会变大
gcc -o bin test.c -g
ls -la

生成汇编
gcc -o bin test.c -s

生成.o文件
gcc -o bin test.c -c

加入定义的宏
gcc -o bin test.c -D

三、gdb调试器

gdb是GNU Project Debugger的简称,也是是GNU(GNU’s Not Unix)开源项目中遵循GPL发行许可证的free software,

gbd官方网站 https://sourceware.org/gdb/
一般来说GDB主要能提供以下四个方面的帮助:
1.start your program,specifying anything that might affect its behavior指定一些参数
2.make your program stop on specified condition 断电
3.examine what has happened,when your program has stopped分析crash现场
4.change things in your program,so you can experiment with correcting the effects of one bug and go on to learn about another 直接修改程序,查看结果

What Languages does GDB Support? (gdb支持的语言)
GDB supports the following languages (in alphabetical order):
Ada
Assembly
C
C++
D
Fortran
Go
Objective-C
OpenCL
Modula-2
Pascal
Rust

gdb安装

sudo apt-get install gdb

查看gdb版本
gdb --version

gdb常用指令

通过gdb调试正在运行的程序:
ps -A (查看进程列表)
gdb -p 进程号

程序挂掉后调试:
gdb xxx core

gdb简单上手使用

工作空间目录workspace/src
cd /home/workspace/src
vim test.cd

编译(-g参数是为了输出调试信息)
gcc -o bin test.c -g

调试可执行文件:
gdb ./bin
按q可退出gdb调试界面

去掉gdb调试界面的版本等信息(便于观察调试界面):
gdb ./bin -q

在gdb运行界面输入run即可运行程序;

查看对应行号的代码:
在gdb运行界面输入list 代码的行号
这里再vim文本编辑界面显示行号: 输入:set nu 回车即可显示代码行号

清空gdb的历史输出信息窗口
!clear

gdb的单步调试功能

设置断点:在gdb输入break 代码的行号,比如break 8;
输入run(或者r),代码会停止在设定的断点位置;

在gbd界面单步执行:next 回车;

在gbd界面继续执行:c 回车,即continue;

在gbd界面查看变量信息:gdb界面输入print 变量名称

!clear

在gbd界面修改变量的值:
run
set var 变量名称=新的数值

清除断点
info break (展示断点信息)
delete 断点序号,例如delete 1

通过访问地址的形式打印变量
例如:正在运行的源码程序中b=20
gdb中输入print &b,得到一个地址,
gdb中输入x 地址,即可得到变量的值(以十六进制数展现)
gdb x /d 地址(以十进制展现)

查看当前寄存器的值:
info register

查看当前进程的信息:
info thread

切换到对应的进程
thread 进程号,比如thread 1

将C语言切换成汇编语言
disass


总结

简单讲解了vim、gcc编译器、gdb调试器的使用。

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

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

相关文章

企业数字化转型的架构治理策略:核心问题、深度分析与优化路径

在当今的商业环境中&#xff0c;企业数字化转型已成为实现可持续发展、增强竞争力的战略选择。企业架构治理&#xff08;Enterprise Architecture Governance Capability, EAGC&#xff09;在数字化转型中扮演着保障架构一致性、提升变革效能的关键角色。本指南深入解析了如何通…

基于springboot+vue实现的农产品物流系统

基于springbootvue实现的农产品物流系统 &#xff08;源码L文ppt&#xff09;4-107 摘 要 随着现代信息技术的迅猛发展&#xff0c;农产品物流系统应运而生&#xff0c;成为连接生产者与消费者的重要桥梁。该系统采用java语言&#xff0c; Spring Boot框架&#xff0c;结合My…

基于uniapp和java的电动车智能充电系统软件平台的设计

文章目录 项目介绍具体实现截图技术介绍mvc设计模式小程序框架以及目录结构介绍错误处理和异常处理java类核心代码部分展示详细视频演示源码获取 项目介绍 对电动车智能充电系统进行设计和开发。通过使用本系统可有效地减少运营成本&#xff0c;提高管理效率。 根据近年来社会…

Jmeter命令监控CPU等指标

JMeter 命令行执行脚本得到的报告中&#xff0c;是没有CPU、内存使用率等监控数据的&#xff0c;但是可以使用JMeter插件帮忙。 一、下载jmeter-plugins-manager.jar 下载后将文件放到jmeter安装包lib/ext目录下。打开Jmeter》菜单栏》选项》Plugins Manager 二、安装PerfMon…

ubuntu20.04 加固方案-检查是否设置登录超时

一、编辑/etc/profile配置文件 打开终端。 使用文本编辑器&#xff08;如vim&#xff09;编辑/etc/profile 文件。 vi /etc/profile 二、添加配置参数 在打开的配置文件中&#xff0c;如图位置添加如下参数&#xff1a; TMOUT1800 export TMOUT三、保存并退出 在vim编辑器…

HarmonyOS使用arkTS拉起指定第三方应用程序

HarmonyOS使用arkTS拉起指定第三方应用程序 前言代码及说明bundleName获取abilityName获取 前言 本篇只说采用startAbility方式拉起第三方应用&#xff0c;需要用到两个必备的参数bundleName&#xff0c;abilityName&#xff0c;本篇就介绍如何获取参数… 代码及说明 bundle…

32位汇编——通用寄存器

通用寄存器 什么是寄存器呢&#xff1f; 计算机在三个地方可以存储数据&#xff0c;第一个是把数据存到CPU中&#xff0c;第二个把数据存到内存中&#xff0c;第三个把数据存到硬盘上。 那这个所谓的寄存器&#xff0c;就是CPU中用来存储数据的地方。那这个寄存器有多大呢&a…

江协科技STM32学习- P35 硬件I2C读写MPU6050

&#x1f680;write in front&#x1f680; &#x1f50e;大家好&#xff0c;我是黄桃罐头&#xff0c;希望你看完之后&#xff0c;能对你有所帮助&#xff0c;不足请指正&#xff01;共同学习交流 &#x1f381;欢迎各位→点赞&#x1f44d; 收藏⭐️ 留言&#x1f4dd;​…

【大数据学习 | HBASE】habse的表结构

在使用的时候hbase就是一个普通的表&#xff0c;但是hbase是一个列式存储的表结构&#xff0c;与我们常用的mysql等关系型数据库的存储方式不同&#xff0c;mysql中的所有列的数据是按照行级别进行存储的&#xff0c;查询数据要整个一行查询出来&#xff0c;不想要的字段也需要…

【dvwa靶场:XSS系列】XSS (Reflected)低-中-高级别,通关啦

一、低级low 简单拿捏 <script>alert(123)</script>二、中级middle 源码过滤了script但是没有过滤大小写&#xff0c;改成大写S <Script>alert(123)</script>三、高级high 比中级高&#xff0c;过滤了script并且以及大小写&#xff0c;使用其他标…

NAT实验

一、网络拓扑 二、实验步骤 1.配ip地址 用缺省路由充当网关 2.配置telent服务 3.配置公网互通&#xff0c;在PC1上ping R3的公网地址&#xff0c;测试是否可以访问互联网 [R1]ip route-static 0.0.0.0 0 10.1.1.2 [R3]ip route-static 0.0.0.0 0 10.2.2.2 此时私网是ping不通…

Centos 7系统一键安装宝塔教程

服务器推荐青鸟云服务器&#xff0c;2H2G低至16元/月 官网地址&#xff1a; 所有产品_香港轻量云 2核 2G-A型_青鸟云 推荐Finalshell软件连接至服务器&#xff0c;下载地址&#xff1a; https://dl.hostbuf.com/finalshell3/finalshell_windows_x64.exe 下载完成后连接服务…

Kafka 之顺序消息

前言&#xff1a; 在分布式消息系统中&#xff0c;消息的顺序性是一个重要的问题&#xff0c;也是一个常见的业务场景&#xff0c;那 Kafka 作为一个高性能的分布式消息中间件&#xff0c;又是如何实现顺序消息的呢&#xff1f;本篇我们将对 Kafka 的顺序消息展开讨论。 Kafk…

SpringBoot day 1105

ok了家人们&#xff0c;今天继续学习spring boot&#xff0c;let‘s go 六.SpringBoot实现SSM整合 6.1 创建工程&#xff0c;导入静态资源 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</…

fastbootd模式刷android固件的方法

1. fastbootd追根溯源 Google在Android 10上正式引入了动态分区机制来提升OTA的可扩展性。动态分区使能后&#xff1a;andorid系统可以在开机阶段动态地进行分区创建、分区销毁、分区大小调整等操作&#xff0c;下游厂商只需要规划好super分区的总大小&#xff0c;其内部的各个…

什么是多因素身份验证(MFA)的安全性?

多因素身份验证(MFA)简介 什么是MFA 多因素身份验证(MFA)是一种安全过程&#xff0c;要求用户在授予对系统、应用程序或账户的访问权限之前提供两种或多种形式的验证。仅使用单个因素&#xff08;通常是用户名和密码&#xff09;保护资源会使它们容易受到泄露&#xff0c;添加…

2024年【汽车修理工(高级)】考试总结及汽车修理工(高级)试题及解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 汽车修理工&#xff08;高级&#xff09;考试总结是安全生产模拟考试一点通总题库中生成的一套汽车修理工&#xff08;高级&#xff09;试题及解析&#xff0c;安全生产模拟考试一点通上汽车修理工&#xff08;高级&a…

qt QFontDialog详解

1、概述 QFontDialog 是 Qt 框架中的一个对话框类&#xff0c;用于选择字体。它提供了一个可视化的界面&#xff0c;允许用户选择所需的字体以及相关的属性&#xff0c;如字体样式、大小、粗细等。用户可以通过对话框中的选项进行选择&#xff0c;并实时预览所选字体的效果。Q…

DolphinScheduler告警通知

DolphinScheduler告警通知 Dolphinscheduler支持多种告警媒介&#xff0c;此处以电子邮件为例进行演示。 1 准备邮箱 如需使用DolphinScheduler的电子邮件告警通知功能&#xff0c;需要准备一个电子邮箱账号&#xff0c;并启用SMTP服务。此处以 QQ 邮箱为例。 1.1 开启 SMTP 服…

Spring 中的 Environment 对象

可参考官网&#xff1a;Environment Abstraction 核心概念 Environment 对象对两个关键方面进行建模&#xff1a;profiles 和 属性&#xff08;properties&#xff09;。 Profile 简单来说&#xff1a;profile 机制在 IOC 容器中提供了一种机制&#xff1a;允许在不同的环境…