调试器gdb
安装gdb
apt intsall gdb
测试代码
在mycode.c文件中编写一段简单代码。

编写自动化程序makefile。

程序发布方式有两种,debug和release模型,Linux下gcc\g++出来的二进制程序,默认是release模式。
由于debug下的代码可以被调试,而release不可以被调试。同时debug形成的可执行程序会有调试信息,而release没有调试信息。
要使用gdb进行调试,必须在源代码生成二进制程序的时候,加上-g选项,如果没有添加,可能会导致程序无法被编译。

此时,代码属于debug模式
gdb常见选项使用
gdb mycode
进入调试,如果没有报错,就进入到了gdb的交互环节中,如果想要退出,使用q即可。
| 命令 | 作用 | 样例 |
|---|---|---|
| list/l | 显示源代码,从上次位置开始,每次列出10行 | list/l 10 |

| 命令 | 作用 | 样例 |
|---|---|---|
| list/l 函数名 | 列出指定函数的源代码 | list/l main |

| 命令 | 作用 | 样例 |
|---|---|---|
| list/l 文件名:行号 | 列出指定文件的源代码 |
list/l mycode.c:10 |

| 命令 | 作用 | 样例 |
|---|---|---|
| r/run | 从程序开始连续执行 |
run |

| 命令 | 作用 | 样例 |
|---|---|---|
| break/b [文件名:]行号 | 在指定行号设置断点 |
break 10 break test.c:10 |

| 命令 | 作用 | 样例 |
|---|---|---|
| break/b 函数名 | 在函数开头设置断点的信息 |
break main |
![]()
| 命令 | 作用 | 样例 |
|---|---|---|
| info break/b | 查看当前所有断点的信息 |
info break |

| 命令 | 作用 | 样例 |
|---|---|---|
| n/next | 单步执行,不进入函数内部,逐过程F10 |
next |

| 命令 | 作用 | 样例 |
|---|---|---|
| s/step | 单步执行,进入函数内部,逐语句F11 |
step |

| 命令 | 作用 | 样例 |
|---|---|---|
| finish | 执行到当前函数返回,然后停止 |
finish |

| 命令 | 作用 | 样例 |
|---|---|---|
| print/p 表达式 | 打印表达式的值 |
print start+end |

| 命令 | 作用 | 样例 |
|---|---|---|
| p 变量 | 打印指定变量的值 | p x |

| 命令 | 作用 | 样例 |
|---|---|---|
| set var 变量=值 | 修改变量的值 | set var i =10 |

| 命令 | 作用 | 样例 |
|---|---|---|
| continue/c | 从当前位置开始连续执行程序 | continue |

| 命令 | 作用 | 样例 |
|---|---|---|
| delete/d breakpoints | 删除所有断点 | delete breakpoints |

| 命令 | 作用 | 样例 |
|---|---|---|
| delete/d breakpoints n | 删除序号为n的断点 | delete breakpoints 1 |

| 命令 | 作用 | 样例 |
|---|---|---|
| disable breakpoints | 禁用所有断点 | disable breakpoints |

| 命令 | 作用 | 样例 |
|---|---|---|
| enable breakpoints | 启用所有断点 | enable breakpoints |

| 命令 | 作用 | 样例 |
|---|---|---|
| info/i breakpoints | 查看当前设置的断点列表 | info breakpoints |

| 命令 | 作用 | 样例 |
|---|---|---|
| display 变量名 | 跟踪显示指定变量的值(每次停止时) |
dispaly x |

| 命令 | 作用 | 样例 |
|---|---|---|
| undiaplay 编号 | 取消对指定编号的变量的跟踪显示 | undisplay 1 |

| 命令 | 作用 | 样例 |
|---|---|---|
| until X行号 | 执行到指定行号 | until 20 |

| 命令 | 作用 | 样例 |
|---|---|---|
| backtreace/bt | 查看当前执行栈的各级函数调用及参数 | backtrace |

| 命令 | 作用 | 样例 |
|---|---|---|
| info/i locals | 查看当前栈帧的局部变量值 | info locals |

154

被折叠的 条评论
为什么被折叠?



