目录
gdb入门-启动与帮助命令查看
gdb单独启动,查看gdb的相关选项
直接通过shell命令窗口执行如下命令
进入gdb调试界面【纯文本界面】
2. gdb帮助说明
进入gdb后执行命令【help】即可看到gdb的相关命令,gdb是通过对命令行进行分类(class)来罗列
通过上面的图示,可以看到gdb把所有的帮助命令分为如下几类
- aliases:命令别名 ,查看帮助【help aliaes】
对gdb部分命令定义的一个简单的别名设置,与linux的命令【aliases】一样
常用命令【where】:显示当前执行线程的函数调用堆栈中当前栈。
breakpoints:中断点设置【help breakpoints】
中断设置命令,是gdb调试过程中的核心命令,可以控制可执行程序运行过程中的中断处理,包括设置中断点、监视点和扑捉点等,同时也可以设置它们的清除、删除、可用或者是不可用。
命令很多需要自己慢慢学习,逐渐熟悉,部分常用命令后期会进行详细演示说明data:可执行程序参数设置和运行时数据显示等
主要对gdb的运行时全局环境进行设置【set核心命令】,导入、导出相关的PE文件信息,显示当前PE文件的相关信息files:对调试文件相关属性进行设置
主要通过gdb对调试的加载程序进行相关的文件参数设置:譬如该改变工作目录、设置加载的core文件、设置可查找目录等。internals:内置gdb命令
该分类的gdb命令一般在调试中使用比较少running:设置程序运行时相关属性特征
通过gdb设置加载程序运行时的一些特征,可以通过加载程序调试其它可执行程序(PS),也可以设置程序跳转执行,提前结束等stack:查看加载程序栈信息
在gdb调试程序过程中,运行中断时,查看相关执行进程或者线程的函数调用栈信息,在多线程中调试时很重要。status:状态查看
gdb核心命令集合,主要是查询gdb和当前加载程序的执行状态,查询相关的信息、栈、线程信息等support:gdb支持的工具命令
- tracepoints:跟踪程序执行
gdb调试/加载其他可执行
- gdb在初始启动的时候可以加载程序,通过如下命令:gdb PE 【core】/【-c core】加载PE文件,同时加载core文件,通过core文件来分析PE执行情况加载core文件
- gdb启动成功后 加载程序:命令file PE【可以通过gdb的help命令:help file来查看相关的文档说明】
- gdb启动,调试当前正在运行程序具体操作流程
- 通过ps命令查找调试的进程程序
- 通过-p选项附加到进程
- 也可以在gdb启动后通过【attach命令附加到进程,通过detach断开连接】
退出gdb调试
- 在执行【quit/q】操作命令
- 附加到进程中的gdb调试过程,需要通过【ctrl+c】先退回到gdb环境中,再执行【quit/q或者是Ctrl+D】操作命令均可
- 先执行【ctrl+c】,中断gdb调试,然后【detach】分离开来,执行【q或者是Ctrl+D】退出
GDB启动参数说明
GDB作用一个调试工具同时也作为一个解析器(所有执行的调试命令都是在该解析器中执行),在启动的过程中有很多可选参数可以进行选择,这样就决定了其功能的强大性。
1. GDB在启动过程中的具体设置如下:【gdb -h | more】
通过以上显示可以看出,gdb的启动参数实质是可以分为三部分。
2. GDB启动参数具体说明
(1)–args 设置调试程序的相关参数
(2)主要参数列举说明:
一、-symbol或者是-s filename
加载符号文件
二、-exec或者是-e filename
加载可执行文件,但是没有加载符号表,这个时候将无法进行调试
三、-se加载可执行文件
既加载符号表也加载相关的其他信息
四、-core或者是-c
-c file加载该core文件作为相关的core dump文件
-c number
-pid number
-p number 连接number号的进程,如果没有该进程则加载相关的core文件
五、-command
-command file
-x file
从相关的file文件中执行相关的gdb命令
六、-directory 目录
-d 目录
增加这个目录到gdb中作为查看源文件的目录
这个命令在gdb内部也是可以设置的,对于调试多个文件中的函数调用等需要进行相关的设置
特别是在调试dll的时候
七、-quiet
-silent或者是-q
在启动gdb的时候不显示相关的version信息
八、-cd directory
设置gdb的工作目录为参数中的工作目录
九、–argc
设置gdb调试的pe的执行文件的参数
也可以在启动gdb后,利用r命令来加载参数
十、-statistics
记录gdb运行这次pe的时间和占用内存空间的大小
十一、shell command
在gdb中执行shell命令
十二、quit或者q
退出gdb