IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> vimgccg++gdb的基本使用 -> 正文阅读

[开发工具]vimgccg++gdb的基本使用


vim,gcc/g++,gdb的基本使用

vim

vim是Linux下的一款编辑器,是用来专门写代码的,vim有三种模式

  • 命令模式
  • 插入模式
  • 底行模式

vim打开时处于命令模式,是不能直接写代码的,需要切换到插入模式才可写代码。vim从命令模式切换到插入模式有如下方法:

命令作用
a光标后移一个字符,进行插入
A在光标所在行的行尾进行插入
i光标位置不变,在光标位置插入
I在光标所在行的行首插入
o在光标所在行的下一行进行插入(会新起一行)
O在光标所在行的上一行进行插入(会新起一行)
s删除光标位置的一个字符后在光标位置插入
S删除光标所在行后进行插入

其中切换到行首(I)/行尾(A)进行插入较常用,vim从编辑模式切换到命令模式按Esc。

vim命令模式的命令:

命令作用
ctrl + b上翻一页
ctrl + f下翻一页
ctrl + u上翻半页
ctrl + d下翻半页
zz将光标所在行调整到屏幕中间
zb将光标所在行调整到屏幕下方
zt将光标所在行调整到屏幕上方
0光标位置定位到行首
^光标位置定位到行首
$光标位置定位到行尾
x删除光标位置的字符
X删除光标前一个位置的字符
D删除光标所在位置到行尾的所有内容
dG删除光标所在行到文件末尾的内容
u撤销上一步的操作
~大小写转换
yy赋值光标所在行
dd剪切光标所在行
p将复制(剪切)的内容粘贴到光标的下一行
P将复制(剪切)的内容粘贴到光标的上一行
r取代光标所在位置的一个字符
R取代光标所在位置的多个字符

在vim的命令模式下,可以使用ctrl + v切换到视图模式实现代码的批量注释。具体操作:

  1. ctrl + v进入视图模式

在这里插入图片描述

  1. 使用hjkl选择想要注释的区域

在这里插入图片描述

  1. 按下I

  2. 输入//

  3. Esc

在这里插入图片描述

vim的底行模式:在vim的命令模式下,按住shift + :进入底行模式,vim的底行模式可以支持查找,批量修改等丰富操作。

底行模式命令作用
n将光标切换到第n行
n1,n2d删除行号为[n1,n2]的所有内容
!在使用vim的时候不用退出编辑器即可使用命令
wq!强制保存退出
set nu显示行号
/string在文本中搜索与指定字符串string相关的内容

gcc/g++

  • gcc/g++是Linux下的编译器,专门用来编译代码
  • gcc编译器不光可以编译c语言,还支持编译 Go、Objective-C,Objective-C ++,Fortran,Ada,D 和 BRIG(HSAIL)等程序
  • gcc/g++编译器可以展示一个.c文件到二进制可执行文件的所有过程

gcc/g++可以分步实现对.c文件的预处理,编译,汇编,链接。

  1. 预处理(pre-processing)

    gcc -E test.c -o test.i
    # -E表示编译器仅对.c文件进程预处理操作生成.i文件
    
  2. 编译(compiling)

    gcc -S test.i -o test.s
    # -S表示对预处理过后的.i文件进行编译,生成.s文件
    
  3. 汇编(assembing)

    gcc -c test.s -o test.o
    # -c表示对编译过后的.i文件进行汇编,生成.o文件
    
  4. 链接(linking)

    gcc test.o -o mybin
    # 生成可执行文件
    

gcc/g++编译器的重要参数:

  1. -g 表示编译产生的可执行文件带有调试信息。默认产生的可执行文件是release的

  2. -o 可以对源代码进行优化,-o参数有4个等级,-o0,-o1,-o2,-o3,-o0默认是不优化,-o3是最高优化级别,一般如果进行优化,-o2就足够。使用-o优化可能会丢失程序的调试信息,使其无法调试。

  3. -Wall 打印警告信息,例如这里有一段代码:

    #include<stdio.h>
    int main()
    {
        int a=10;
        printf("hello world\n");
        return 0;
    }
    

    使用-Wall:

    [slowstep@localhost day01]$ gcc test.c -o mybin -Wall
    test.c: In function ‘main’:
    test.c:4:9: warning: unused variable ‘a’ [-Wunused-variable]
         int a=10;
             ^
    
  4. -std=c++11 指定使用的c标准或c++标准。

  5. -D 定义宏。例如:

    #include<stdio.h>
    int main()
    {
    #ifdef DEBUG
        printf("hello\n");
    #endif
    #ifndef DEBUG
        printf("world\n");
    #endif
        return 0;
    }
    

    运行:

    gcc -DDEBUG test.c -o mybin_debug
    gcc test.c  -o mybin
    ./mybin
    world
    ./mybin_debug 
    hello
    

gdb

gdb是Linux下一款强大的调试器,其主要功能有:

  • 设置断点(断点可以是条件表达式)

  • 使程序在指定的代码行上暂停执行,便于观察

  • 单步执行程序,便于调试

  • 查看程序中变量值的变化

  • 动态改变程序的执行环境

  • 分析崩溃程序产生的core文件

gdb调试的程序必须是debug的,在使用gcc/g++编译程序时,要加上-g选项,生成的程序才能调试。

gdb的常用命令:

$(gdb)run(r) # 开始运行程序,到断点处停止

$(gdb)list(l) # 查看原代码

$(gdb)next(n)   # 单步调试(逐过程,函数直接执行)

$(gdb)step(s) # 单步调试(逐语句:跳入自定义函数内部执行)

$(gdb)break+num(b) # 在第num行设置断点

$(gdb)info b # 查看断点信息

$(gdb)delete breakpoints num(d) # 删除断点(根据断点编号删除)

$(gdb)finish # 结束当前函数,返回到函数调用点,如果函数中有循环且循环内有断点需删除该断点才能结束

$(gdb)continue(c) # 继续运行到下一个断点

$(gdb)print(p) # 打印值及地址,只在当前打印一次

$(gdb)info breakpoints # 查看断点信息

$(gdb)enable breakpoints # 启用断点(使用的是断点编号)

$(gdb)disable breakpoints # 禁用断点(根据编号禁用)

$(gdb)display # 追踪查看具体变量值,多次打印

$(gdb)undisplay # 取消追踪观察变量,undisplay后面跟变量的编号,不是名称

启用断点和禁用断点的解释:gdb中可以使用info b来查看断点信息,默认打的断点是开启的。可以通过Enb查看。

(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400529 in Sum at test.c:6
        breakpoint already hit 29 times
2       breakpoint     keep y   0x0000000000400555 in main at test.c:12

在禁用断点以后,断点的Enb变为n,表示断点失效。

(gdb) disable breakpoints 2
(gdb) info b
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x0000000000400529 in Sum at test.c:6
        breakpoint already hit 29 times
2       breakpoint     keep n   0x0000000000400555 in main at test.c:12
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2022-09-21 00:48:32  更:2022-09-21 00:50:38 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 22:36:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码