油管高分教程:
===> 油管链接
===> 搬运到B站链接
对应文档:
06:23
run
运行程序,直到遇到断点
15:14quit
退出gdb
10:46list
显示当前命令行起的十行代码
07:24break
设置断点 (可段在命令行/b L_number,也可在子程序/ b fun_ name) (信息行func里面,显示的是当前参数的值) 指针如果接受到地址的话,会正确显示。
10:00next
12:0615:47 example: 段错误调试
19:18up
(当前命令行/函数是谁在调用,也就是让GDB显示上一步的命令)
/down
指针B(函数名) 调试 (call stack)整个action 称作此。
21:44display
(variable)/undisplay (current item number) 查看variable(int)看值的变化,or variable(pointer)看指针地址变化,就可以找到指针丢失的那条命令。display了以后每次都会默认打印出这个值。
26:30backtrace
,打印出当前函数的调用栈。27:19 example:阶乘递归调试
29:55step
(函数里面) go into 函数,函数里面的语句逐条调试
31:57continue
,让程序继续执行,直到遇到下一个断点或watch的变量变化处
34:40finish
当前函数,显示函数变量们的值38:00 example 4
40:16watch
watchpoint (var) observe var has changed. 也就是说display + continue能走到值变化的地方
44:08info
b/variable
44:28delete
Number 删除断点,如果delete后不跟任何number表示删除所有断点
47:15whatis
查变量属性(int? double? … )48:29 example 5
49:43target record-full
(gdb能反向调试,会记录所有变量变化情况,条件比较苛刻,有一定局限性)
52:00reverse
倒运行 /step /c52,55
set var "变量名= value"
重设变量值(不用每次退出gdb-修改代码-编译-启动gdb,太麻烦啦~)
文档2:《gdb基础学习笔记》
gdb调试 | next, nexti, step, stepi单步调试详解
在gdb中,有next, nexti, step, stepi等指令来单步调试程序,他们功能各不相同,区别在于单步的“跨度”上。
1、next 单步到程序源代码的下一行,不进入函数。
2、nexti 单步一条机器指令,不进入函数。
3、step 单步到下一个不同的源代码行(包括进入函数)。
4、stepi 单步一条机器指令。
可以分两类来记住:
1、next和nexti(即n和ni)是下一条,不进入函数内部,比如说在某一行发生了函数调用,next/nexti就继续到下一行。next是在源码层面的下一行,而nexti就是机器指令层面的,单步到下一个机器指令。
2、step和stepi(即s和si)就是单步步入,进入函数内部,比如说在某一行发生了函数调用,step/stepi就会进入函数体内部,把函数体执行一遍,再返回执行下一条指令。同理,step是在源码层面的操作指令,stepi是在机器指令层面的。
gdb文本用户界面
tui enable
(ctrl + x 松开 + a)
tui disable
(ctrl + x 松开 + a)
layout:用于分割窗口,可以一边查看代码,一边测试。主要有以下几种用法:
layout src
:显示源代码窗口
layout asm
:显示汇编窗口
layout regs
:显示源代码/汇编和寄存器窗口
layout split
:显示源代码和汇编窗口
layout next
:显示下一个layout
layout prev
:显示上一个layout
Ctrl + L
:刷新窗口
Ctrl + x,再按1
:单窗口模式,显示一个窗口
Ctrl + x,再按2
:双窗口模式,显示两个窗口
Ctrl + x,再按a
:回到传统模式,即退出layout,回到执行layout之前的调试窗口。如果想再次回到之前的layout界面,再按一次Ctrl+x+a即可重新打开
focus命令切换窗口焦点,然后就可以在c源码窗口或者汇编窗口中上下滑动查看代码了~
focus next
(fs next)
focus prev
(fs prev)
配套练习:CSAPP—bomb lab 炸弹实验
完善的电子书和实验内容:CSAPP gitbook
bomb lab实验讲解视频
https://www.bilibili.com/video/BV1vu411o7QP?spm_id_from=333.788.videopod.episodes&vd_source=4b3e800f3be3fbabb11c99c759de12aa
CSDN CSAPP文档
https://blog.csdn.net/weixin_43362650/article/details/122890142