Ubuntu1804下安装gdb与使用
Ubuntu1804下安装gdb与使用
1. Ubuntu1804下安装gdb
sudo apt-get install gdb
查看安装版本:
gdb --version GNU gdb (Ubuntu 9.2-0ubuntu1~20.04) 9.2 Copyright (C) 2020 Free Software Foundation, Inc.
2.Ubuntu1804下gdb使用
1. GDB调试实例
- 首先创建一个C语言文件test.c
vim test.c
#include <stdio.h> void ShowRevertNum(int iNum) { while (iNum > 10) { printf("%d", iNum % 10); iNum = iNum / 10; } printf("%d\n", iNum); } int main(void) { int iNum; printf("Please input a number :"); scanf("%d", &iNum); printf("After revert : "); ShowRevertNum(iNum); }
上面的代码可以逆序输出一个整型数,比如输入123,则输出321。
- 使用gcc生成可执行文件并编译运行
gcc -o test1 test.c ./test1
运行结果:
可以看到,在输入100的时候输出结果是错误的
- 下面开始用GDB进行调试, 进入gdb
gcc -o test1 -g test.c gdb test1
-
输入l查看代码, 运行结果:
-
下断点
-
发现问题
经过一步一步查看值的变化,发现iNum变成10了之后就不会再进入循环了,所以循环条件应该是大于等于10,我们要对错误进行修改,需要先退出gdb再进行对代码的修改。
- 修改程序,解决问题
程序编译运行后,输入100,得到正确的结果
2. 内存出错的GDB调试
Linux中,程序崩溃时,一般会产生core文件,记录进程退出前的状态,调试段错误问题,借助于该文件,可快速定位问题。
- 首先让Linux系统产生core文件
新建一个C语言文件,输入以下代码:
#include<stdio.h> int main(void) { int *p=0; *p=1; return 0; }
然后输入命令:
ulimit –c 100
让系统产生core文件,运行程序,让程序崩溃,产生core文件,使用gdb配合core文件,定位问题
3.gdb的常用命令
命令 | 结果 |
---|---|
file | 装入想要调试的可执行文件 |
kill | 终止正在调试的程序 |
list | 列出产生执行文件的源代码的一部分 |
next | 执行一行源代码但不进入函数内部 |
step | 执行一行源代码而且进入函数内部 |
run | 执行当前被调试的程序 |
c | 继续运行程序 |
quit | 终止gdb |
watch | 使你能监视一个变量的值而不管它何时被改变 |
backtrace | 栈跟踪,查出代码被谁调用 |
查看变量的值 | |
make | 使你能不退出gdb就可以重新产生可执行文件 |
shell | 使你能不离开gdb就执行UNIX shell命令 |
whatis | 显示变量或函数类型 |
break | 在代码里设断点,这将使程序执行到这里时被挂起 |
info break | 显示当前断点清单,包括到达断点处的次数等 |
info files | 显示被调试文件的详细信息 |
info func | 显示所有的函数名称 |
info local | 显示当函数中的局部变量信息 |
info prog | 显示被调试程序的执行状态 |
delete [n] | 删除第n个断点 |
disable[n] | 关闭第n个断点 |
enable[n] | 开启第n个断点 |
ptype | 显示结构定义 |
set variable | 设置变量的值 |
call name(args) | 调用并执行名为name,参数为args的函数 |
Finish | 终止当前函数并输出返回值 |
return value | 停止当前函数并返回value给调用者 |
参考:
https://www.i4k.xyz/article/Linux7985/52399439
https://wizardforcel.gitbooks.io/100-gdb-tips/content/set-pagination-off.html
https://www.cnblogs.com/liujunhuasd/p/15819456.html
https://renyili.org/post/gdb_use/
https://imageslr.com/2023/gdb.html
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Blazor Hybrid适配到HarmonyOS系统
· 万字调研——AI生成内容检测
· 解决跨域问题的这6种方案,真香!
· Obsidian + DeepSeek:免费 AI 助力你的知识管理,让你的笔记飞起来!
· 一套基于 Material Design 规范实现的 Blazor 和 Razor 通用组件库