Stack level 1, frame at 0x7fffffffe260: rip = 0x4004e9 in func (main.c:6); saved rip 0x400508 called by frame at 0x7fffffffe280, caller of frame at 0x7fffffffe240 <--上一级栈帧地址为 0x7fffffffe280,下一级栈帧地址为 0x7fffffffe240 source language c. Arglist at 0x7fffffff...
(gdb) set listsize <count> PS:设置一次显示源代码的行数。 (gdb) show listsize PS:查看当前listsize的设置。 list命令还有下面的拓展用法: (gdb) list <first>, <last> PS:显示从first行到last行之间的源代码。 例:(gdb) list n1 n2:将会显示n1行和n2行之间的代码,如果使用-tui启动gdb,将会在相应...
5、栈帧 frame 栈帧用来存储函数的变量值等信息,默认情况下,GDB 总是位于当前正在执行函数对应栈帧的上下文中。 在前面的例子中,由于当前正在 myprint函数中执行,GDB 位于第0帧的上下文中。可以通过 frame 命令来获取当前正在执行的上下文所在的帧。 下面,我们尝试使用 print 命令打印下当前栈帧的值,如下: 如果我...
(gdb) frame <栈帧编号> # 可以查看指定栈帧的详细信息 (gdb) info frame <栈帧编号> # 进入上层栈帧 (gdb) up # 进入下层栈帧 (gdb) down info info 指令是一个很强大的指令,使用它可以查看各种变量的值,如果我们希望看到详细的函数调用信息帧的信息,如:函数地址、调用函数的地址、被调用函数的地址、...
Id Target Id Frame 15 LWP 1992 epoll_wait () at bionic/libc/arch-arm/syscalls/epoll_wait.S:10 14 LWP 2076 epoll_wait () at bionic/libc/arch-arm/syscalls/epoll_wait.S:10 13 LWP 1815 __futex_syscall3 () at bionic/libc/arch-arm/bionic/futex_arm.S:39 ...
backtrace 与 frame 命令 info break、enable、disable 和 delete 命令 list 命令 print 和 ptype 命令 为了结合实践,这里以调试 Redis 源码为例来介绍每一个命令,先介绍一些常用命令的基础用法,某些命令的高级用法会在后面讲解。 Redis 源码下载与 debug 版本编译 ...
在每一步之后,使用GDB的list命令来显示当前位置周围的代码。list命令会显示当前位置的前后若干行代码,默认显示10行。可以使用list n命令来显示当前位置的前后n行代码,例如:list 5。 继续执行程序。可以使用GDB的continue命令来继续执行程序,直到下一个断点或程序结束。 通过以上步骤,每次执行到断点处后,使用lis...
backtrace 是用来查看函数调用的顺序(函数调用栈的信息);frame N 则是切换到栈编号为 N 的上下文中;info frame 是用来查看当前函数站调用的栈帧信息的。栈帧信息就是我们之前在 C 语言中讲到的函数活动记录,如下 我们再来深入的看看 info 命令,如下
backtrace 栈帧个数 *frame:打印栈帧。使用格式: frame 栈帧号 *info frame:显示当前栈帧的详细信息。 *select-frame:选择栈帧,选择后可以用info frame来显示栈帧信息。使用格式: select-frame 栈帧号 *kill:结束当前程序的调试。 *quit:退出gdb。
这些所有的栈帧都存放在内存中的栈区。通过命令 info frame 可以查看当前使用的栈帧所存储的信息,这里面包含了栈帧编号、栈帧地址、调用者、源码编程语言等信息。通过命令 frame num 、up 、down 可以选的改变栈帧。 查看当前所有栈帧 bt (27)x 查看内存...