欢迎光临
我们一直在努力

Git GDB/CGDB调试器

Git版本控制器与GDB/CGDB调试器学习总结


一、Git版本控制器

1.1 安装Git

yum install git
git –version # 查看版本

1.2 在GitHub创建项目

  • 登录GitHub,点击左下方的 New repository 按钮
  • 输入项目名称,校验通过后点击 Create repository
  • 在创建好的项目页面中复制项目链接(HTTPS或SSH)
  • 1.3 下载项目到本地

    git clone [url]

    1.4 Git三板斧

    命令作用
    git add [文件名] 将文件添加到暂存区,告知Git需要管理
    git commit -m "日志信息" 提交改动到本地仓库,必须注明提交日志
    git push 同步到远端服务器(GitHub),需输入用户名密码

    1.5 其他常用命令

    命令作用
    git log 查看提交历史记录
    git status 查看当前仓库状态
    git pull 从远端拉取最新代码

    1.8 首次使用配置

    git config –global user.name "Your Name"
    git config –global user.email you@example.com

    1.9 免密码提交

    可参考配置SSH密钥或使用凭证助手来实现免密码提交。


    二、调试器 – GDB/CGDB

    2.1 预备知识

    • 程序发布方式有两种:debug模式 和 release模式
    • Linux下gcc/g++默认生成的是 release模式,不支持调试
    • 要使用gdb调试,编译时必须加上 -g 选项

    # 默认模式(不支持调试)
    gcc mycmd.c -o mycmd

    # debug模式(支持调试)
    gcc mycmd.c -o mycmd -g

    # 验证是否包含调试信息
    file mycmd # 会显示 "with debug_info"

    2.2 GDB基本使用

    操作命令
    启动调试 gdb binFile
    退出调试 ctrl+d 或 quit

    2.3 GDB常用命令大全

    运行与控制
    命令简写作用
    run r 从程序开始连续执行
    continue c 从当前位置继续执行
    next n 单步执行,不进入函数内部(逐过程,类似F10)
    step s 单步执行,进入函数内部(逐语句,类似F11)
    finish 执行到当前函数返回后停止
    until 行号 执行到指定行号
    断点管理
    命令作用
    break 行号 / b 行号 在指定行设置断点
    break 文件名:行号 在指定文件的指定行设置断点
    break 函数名 在函数开头设置断点
    info break / info b 查看所有断点信息
    delete breakpoints / d 删除所有断点
    delete breakpoints n 删除序号为n的断点
    disable breakpoints 禁用所有断点
    enable breakpoints 启用所有断点
    查看与修改变量
    命令作用
    print 表达式 / p 打印表达式的值
    p 变量名 打印指定变量的值
    set var 变量=值 修改指定变量的值
    display 变量名 跟踪显示指定变量(每次停止时自动显示)
    undisplay 编号 取消跟踪显示
    info locals 查看当前栈帧的局部变量值
    栈与代码查看
    命令作用
    list / l 显示源代码,每次10行
    list 行号 显示指定行附近的源代码
    list 函数名 列出指定函数的源代码
    backtrace / bt 查看当前调用栈

    2.4 Watch(监视变量变化)

    watch 命令用于监视一个表达式(如变量)的值,当值发生变化时GDB会自动暂停:

    (gdb) watch result # 监视result变量
    (gdb) c # 继续执行
    # 当result变化时,GDB会自动暂停并显示新旧值

    应用场景:当怀疑某个变量被意外修改导致问题时,可以用watch监控。

    2.5 条件断点

    方式一:新增时带条件

    (gdb) b 9 if i == 30 # 在第9行设置断点,仅当i==30时触发

    方式二:给已有断点追加条件

    (gdb) condition 2 i==30 # 给2号断点追加条件 i==30(注意没有if)

    ** 注意**:两种方式语法不同,不要混淆!

    2.6 实战示例:定位问题

    通过 set var 可以临时修改变量值来验证问题原因:

    (gdb) p result # 查看result值为5050
    (gdb) p flag # 查看flag值为0(异常)
    (gdb) set var flag=1 # 临时修改flag为1
    (gdb) n # 继续执行,验证结果是否正确

    2.7 CGDB(推荐)

    CGDB是GDB的增强版,支持分屏显示源代码,调试体验更好:

    # CentOS安装
    sudo yum install -y cgdb

    # Ubuntu安装
    sudo apt-get install -y cgdb

    使用技巧:

    • ESC键:进入代码窗口(可浏览代码)
    • i键:回到GDB命令窗口
    赞(0)
    未经允许不得转载:171主机测评 » Git GDB/CGDB调试器
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址