gdb用于实现在linux下通过gdb进行调试。由于gcc、g++生成的文件是release文件,而不是用于调试的debug文件,所以需要使用gcc -g命令,生成debug文件
调试器:核心工作,主要是为了定位问题
所有查看内容的指令,不影响实际的调试指令
GDB的作用
GDB 全称“GNU symbolic debugger”,从名称上不难看出,它诞生于 GNU 计划(同时诞生的还有 GCC、Emacs 等),是 Linux 下常用的程序调试器。发展至今,GDB 已经迭代了诸多个版本,当下的 GDB 支持调试多种编程语言编写的程序,包括 C、C++、Go、Objective-C、OpenCL、Ada等。实际场景中,GDB 更常用来调试 C 和 C++程序。
总的来说,借助 GDB调试器可以实现以下几个功能:
程序启动时,可以按照我们自定义的要求运行程序,例如设置参数和环境变量;
可使被调试程序在指定代码处暂停运行,并查看当前程序的运行状态(例如当前变量的值,函数的执行结果等),即支持断点调试;
程序执行过程中,可以改变某个变量的值,还可以改变代码的执行顺序,从而尝试修改程序中出现的逻辑错误。
主要调试命令:
通过gdb指令进入调试状态
使用命令l 1展示代码
使用命令r执行调试
使用命令b 行号 实现在行号位置设置断点
使用info b命令显示所有设置的断点信息
使用d 断点序号删除序号对应行号位置断点
使用display命令实现调试长显示,这样每次调试时都显示,与vs中的监视类似
取消长显示,使用undisplay
使用until 行号,使代码运行到行号处停止,在函数内进行指定位置跳转,执行完区间代码
使用n进行逐过程调试
使用s进行逐语句调试
finish:进入一个函数,只执行完该函数,就停下来