当前位置: 首页 > article >正文

git的简单使用与gdb

版本控制器git

为了能够更方便管理这些不同版本的文件,有了版本控制器,可以了解一个文件的历史,以及它的发展过程的系统,通俗的说就是一个可以记录工程的每一次改动和版本迭代的一个管理系统,同时也方便多人协作。

三板斧

下载项目到本地

创建一个防置代码的目录

git clone 链接

1.git add

将代码放到下载好的目录中

git add 文件名

2.git commit

提交改动到本地(在协同时,别人改了,而你不知道的情况下也交了改动的,那么你会提交不了,得先同步别人改动的到你这里,然后才可以提交)

git commit -m “xxx”

3.git push

同步到远端服务器上

这时要输入gitee的用户名和密码,这里用户名是@的后面的。

代码示例:
 1.要进入到gitee的目录里面

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# pwd
/root/zym/c-small-pants
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# 

2.写好的代码

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# touch mycode.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# vim mycode.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# 

3.git add

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# git add mycode.c

4.git commit(加-m指定信息)

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# git commit -m "测试用例"
[master fe43477] 测试用例
 1 file changed, 8 insertions(+)
 create mode 100644 mycode.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants#

5.git push

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# git push
Username for 'https://gitee.com': zhong-iming
Password for 'https://zhong-iming@gitee.com': 
Enumerating objects: 4, done.
Counting objects: 100% (4/4), done.
Delta compression using up to 2 threads
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 322 bytes | 322.00 KiB/s, done.
Total 3 (delta 1), reused 0 (delta 0), pack-reused 0
remote: Powered by GITEE.COM [1.1.5]
remote: Set trace flag 1e4a7eb8
To https://gitee.com/zhong-iming/c-small-pants.git
   e3b1905..fe43477  master -> master
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# 

调试器-gdb/cgdb使用

程序发布方式有俩种,debug模式和release模式,Linux gcc/g++出来的二进制程序,默认是release模式

要使用gdb调试,必须在源代码生成二进制程序的时候,加上-g选项,说明是debug模式。

代码示例:

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# gcc -o file file.c
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# file file
file: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=cb0c2a14e62f02b1b4c61b83570301866fab50c1, for GNU/Linux 3.2.0, not stripped

//没加-g选项没有debug信息

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# gcc -o file file.c -g
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# file file
file: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=a3343bb6c7630505b89539a79e3f09727f627859, for GNU/Linux 3.2.0, with debug_info//有debug信息加了-g选项, not stripped
root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# 

常见使用

gdb 目标文件

ctrl+d或quit调试命令

代码演示:

r运行出结果 5050

root@iZbp1be068ksa92vuf0kbdZ:~/zym/c-small-pants# gdb file
GNU gdb (Ubuntu 12.1-0ubuntu1~22.04.2) 12.1
Copyright (C) 2022 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from file...
(gdb) r
Starting program: /root/zym/c-small-pants/file 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
I will begin
running done, result is: [1-100]=5050 /结果展示
[Inferior 1 (process 68489) exited normally]
(gdb) 

cgdb调试是会把源文件的代码一起显示的 

b+行号 断点

 删除断点 d+断点编号

先用info b去查看断点的信息,可以知道断点编号

逐过程 n/next

逐语句step/s

输入一个指令后按enter会直接执行上一个命令

 


http://www.kler.cn/a/414385.html

相关文章:

  • Linux(ubuntu)系统的一些基本操作和命令(持续更新)
  • R Excel 文件操作指南
  • YOLOv11融合PIDNet中的PagFM模块及相关改进思路
  • Vue封装组件
  • matlab 实现混沌麻雀搜索算法的光伏MPPT控制仿真
  • 111. UE5 GAS RPG 实现角色技能和场景状态保存到存档
  • LVGL加载器,led和列表学习(基于正点原子)
  • Django websocket 进行实时通信(消费者)
  • 第32周:猴痘病识别(Tensorflow实战第四周)
  • GitLab历史演进
  • 组成无重复数字的三位数
  • 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。-多语言
  • 第02章 使用VMware部署CENTOS系统
  • SqlServer强制转换函数TRY_CONVERT和TRY_CAST
  • “小bug”示例
  • 一款现代化的轻量级跨平台Redis桌面客户端
  • 大数据机器学习算法与计算机视觉应用05:乘法权重算法
  • 【第十二课】Rust并发编程(三)
  • NodeFormer:一种用于节点分类的可扩展图结构学习 Transformer
  • 修改element UI el-table背景颜色样式 input select date vuetree
  • 如何在 IIS 上部署 .NET Core 应用程序 ?
  • 基于 Flask 和 Socket.IO 的 WebSocket 实时数据更新实现
  • 常用Python集成开发环境(IDE)
  • 基于FPGA的SD NAND读写测试(图文并茂+源代码+详细注释)
  • ISIS SSN/SRM 标志在 P2P 链路和 Broadcast 链路中的作用
  • Python全局解释器锁(GIL)深度解析