北京智能网站建设制作,广州网络公司图片,服装网站建设的规模和类别,努力把网站建设成为#x1f49b;不要有太大压力#x1f9e1; #x1f49b;生活不是选择而是热爱#x1f9e1; #x1f49a;文章目录#x1f49a; 1. 背景知识2. 使用 1. 背景知识 1. 程序发布的方式有两种#xff0c;debug模式和release模式
2. Linux下#xff0c;gcc和g编译生成的可执行…不要有太大压力 生活不是选择而是热爱 文章目录 1. 背景知识2. 使用 1. 背景知识 1. 程序发布的方式有两种debug模式和release模式
2. Linux下gcc和g编译生成的可执行程序默认是release模式
3. 要使用gdb调试必须在debug模式下进行调试要加上-g选项 如果写makefile的时候 不加-g选项的话就无法调试。没有找到调试信息
如果用-g选项生成了可执行文件我们如何查看调试信息呢
$ readelf -S mytest | grep -i debug可以查看到调试信息
2. 使用
gdb mytest进入开始调试 list或l显示mytest的源代码后面直接回车即可(因为gdb会记住最近的一条命令如果命令无变化可以直接回车)每次显示十行。默认可能不是从最开始打印 list或 l 0从第一行开始显示 listl 函数名列出某个函数的源代码 run / r开始调试如果没有设置断点就直接运行结束 break / b 行号给某一行打断点 info b查看断点 delete / d 断点序号删除断点 删除断点要结合 info b来看因为打断点的时候会自动生成断点的序号 单独一个d会删除所有断点 next / n单条执行.逐过程 print / p 变量打印变量的值 step / s步入.逐语句会进入函数 bt查看调用堆栈 finish直接运行完当前函数 如果此时进入了一个函数但是不想继续一步一步走了想直接运行完这个函数就用finish 注意finish只能结束main函数之外的函数 display长显示 在循环中我们时常要查看循环变量的值是多少可以用长显示让循环变量一直显示着 undisplay 长显示变量的编号取消变量的长显示 给变量长显示之后会对应前面有一个编号 until X行号跳至X行 注意until是函数内跳转不会调到函数外部如果该函数在main函数中的位置是第18行那么你输入的行数超过18行他还是会停在18行
continue / c 跳到下一个断点 并且跳到下一个断点的时候两个断点中间的代码是被执行了的 disable 断点编号禁用断点 enable 断点编号启用断点 set var 变量名 值设置变量的值 打印自定义类型 或者 数组 p就可以做到 可以看到p命令直接就把自定义类型或者数组中的元素全显示出来了
✨感谢阅读~ ✨ ❤️码字不易给个赞吧~❤️