• gdb调试简要总结


    说明:源自牛客网

    GDB调试:gdb调试的是可执行文件,在gcc编译时加入 -g ,告诉gcc在编译时加入调试信息,这样gdb才能调试这个被编译的文件 gcc -g tesst.c -o test

    ps: gcc和g++命令的区别,gcc一般用于.c文件,g++一般用于.cpp文件,如果把gcc编译用于.cpp文件一般会显示找不到c++的一些库的报错
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    对于上述命令的说明:

    1.list

    list 5,10:显示5到10行的代码
    list 10: 以10为中心显示上下文的代码,一般显示的listsize限制为10,所以显示5-14行的代码(?)
    list test.c:5, 10: 显示test.c源文件5到10行的代码,在调试多个文件时使用
    list get_sum: 显示get_sum函数周围的代码
    list test.c:get_sum: 显示源文件get_sum函数周围的代码,在调试多个文件时使用

    例子:g++ sort.cpp main.cpp -o main -g
    此时gdb list 10默认显示main.cpp第10行的上下文,除非gdb list sort.cpp:10 才会显示 sort.cpp第10行中的上下文。

    2. show list/listsize

    默认每次显示的行数

    3.set list/listsize 行数

    修改默认每次显示的行数

    4. help

    help list/all:查看帮助信息

    5.break

    break:设置断点

    break 7:在第七行设置断点

    break get_sum:以函数名设置断点

    break 行号或者函数名 if 条件:以条件表达式设置断点

    6.watch

    watch 条件表达式:条件表达式发生改变时程序就会停下来

    7.next\step

    next:继续执行下一条语句 ,会把函数当作一条语句执行

    step:继续执行下一条语句,会跟踪进入函数,一次一条的执行函数内的代码

    8.条件断点:break if 条件 以条件表达式设置断点

    9.多进程下如何调试

    用set follow-fork-mode child 调试子进程

    ​或者set follow-fork-mode parent 调试父进程

  • 相关阅读:
    Spring三级缓存解决循环依赖
    不会说就少说点
    JavaScript---DOM---DOM简介、获取元素、事件基础、操作元素---11.5
    Go Web项目学习之项目结构
    SpringMVC的架构有什么优势?——控制器(三)
    效率工具之Arthas
    STM32实战总结:HAL之PWM蜂鸣器
    Redis实战之年会抽奖
    【系统分析师之路】第六章 复盘需求工程(综合知识概念)
    论文阅读:Denoising Diffusion Probabilistic Models
  • 原文地址:https://blog.csdn.net/goodgoodstudy___/article/details/126085819