GDB简介
GDB是GNU开源组织发布的一个强大的Linux下的程序调试工具。
一般来说,GDB主要帮助你完成下面四个方面的功能:
1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序(按着自己的想法运行)。
2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)
3、当程序被停住时,可以检查此时你的程序中所发生的事。
4、你可以改变你的程序,将一个BUG产生的影响修正从而测试其他BUG。
GDB支持以下编程语言 :
•Ada
•Assembly
•C
•C++
•D
•Fortran
•Go
•Objective-C
•OpenCL
•Modula-2
•Pascal
•Rust
GDB基本命令
| 命令 | 描述 |
|---|---|
| backtrace(或bt) | 查看各级函数调用及参数 |
| finish | 执行到当前函数返回,然后停下来等待命令 |
| frame(或f)帧编 | 选择栈帧 |
| info(或i) locals | 查看当前栈帧局部变量的值 |
| list(或l) | 列出源代码,接着上次的位置往下列,每次列10行 |
| list行号 | 列出从第几行开始的源代码 |
| list函数名 | 列出某个函数的源代码 |
| next(或n) | 执行下一行语句 |
| print(或p) | 打印表达式的值,通过表达式可以修改变量的值或者调用函数 |
| set var | 修改变量的值 |
| start | 开始执行程序,停在main函数第一行语句前面等待命令 |
| step(或s) | 执行下一行语句、如果有函数调用则进入到函数中 |
| break(或b)行号 | 在某一行设置断点 |
| break 函数名 | 在某个函数开头设置断点 |
| break…if… | 设置条件断点 |
| continue(或c) | 从当前位置开始连续而非单步执行程序 |
| delete breakpoints | 删除断点 |
| display变量名 | 跟踪查看一个变量,每次停下来都显示它的值 |
| disable breakpoints | 禁用断点 |
| enable breakpoints | 启用断点 |
| info(或i) breakpoints | 查看当前设置了哪些断点 |
| run(或r) | 从头开始连续而非单步执行程序 |
| undisplay | 取消对先前设置的那些变量的跟踪 |
| watch | 设置观察点 |
| info(或i) | 查看当前设置了哪些观察点 |
| watchpoints | 从某个位置开始打印存储器的一段内容,全部当成字节来看,而不区分哪些字节属于哪些变量 |
#include<stdio.h>
#ifdef _PRINT_
void print(){
printf("hello world\n");
}
int main(){
int i;
for(i = 0;i<5;i++){
printf("%d\n",i);
}
print();
return 0;
}
#endif
#ifdef _CORE_
#include<stdio.h>
int main(int argc,const char *argv[]){
int *temp = NULL;
*temp = 10;
return 0;
}
#endif
#ifdef _ING_
#include<stdio.h>
#include<unistd.h>
int main(){
while(1){
int i;
i++;
printf("%d\n",i);
}
return 0;
}
#endif



根据进程号GDB调试
ps -ef | grep a.out
gdb a.out -p 7558
本文介绍了GDB,一个强大的开源Linux调试工具,它支持多种编程语言,具备启动程序、设置断点、检查状态和修改变量等功能。文章详细列举了GDB的基本命令和实例,以及如何根据进程号进行调试。
1041

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



