GDB 程序调试常用命令
Posted 晨峰说
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了GDB 程序调试常用命令相关的知识,希望对你有一定的参考价值。
调试之前
若要在GDB中调试程序在编译时需要加上调试信息
在GCC中添加的方法
GCC -g a.c -o a.exe
或下面提供更符合GDB的调试信息
GCC -ggdb a.c -o a.exe
运行流程
命令 | 作用 |
---|---|
-start | 开始执行程序,在main函数第一句处停止 |
-continue、-c | 从当前位置继续执行 |
-run、-r | 执行程序到下一个断点或程序结束 |
-next、-n | 执行下一句,不会进入其他函数 |
-step、-s | 执行下一步,会进入其他函数 |
-set args <参数> | 指定运行的参数 |
-show arge | 查看已经设置的参数 |
-path <路径> | 设定程序运行的路径 |
-show path | 查看设定好的路径 |
变量、栈的操作
命令 | 作用 |
---|---|
-info <变量名> 、-i <变量名> | 查看局部变量值 |
-info locals、-i locals | 查看所有局部变量的值 |
-set var <变量名>=<值> | 修改当前变量的值 |
-print <表达式>、-p <表达式> | 查看表达式的值 |
-display <变量名> | 跟踪一个变量,每次停止都显示这个变量 |
-x /<整数> <变量名> | 查看从变量名所指内存单元开始的整数个字节的内容 |
-backtrace、bt | 查看函数及其参数 |
-frame <栈层次(整数)> 、-f <栈层次> | 切换到指定栈,然后可以查看其他位置的变量,像全局变量、另一个局部变量 |
断点相关操作
命令 | 作用 |
---|---|
-break <行数、函数名>、-b <行数、函数名> | 在某行或某函数设置断点 |
-break <行数、函数名> if <表达式> | 在某行或某函数设置当表达式成立时的断点 |
-info breakpoints | 查看所有断点和它们的断点号 |
-delete breakpoints <断点号> | 删除断点 |
-disable breakpoints <断点号> | 禁用断点 |
-enable breakpoints <断点号> | 启用断点 |
-watch <变量名> | 当变量改变时中断 |
-info watchpoints、i watchpoints | 查看所有watch的变量 |
以上是关于GDB 程序调试常用命令的主要内容,如果未能解决你的问题,请参考以下文章