GDB-5——gdb tui在gdb中显示程序源码

 

一、简介

gdb 在调试的时候不能很好的展示源码。gdb 里面可以用 list 命令显示源码,但是 list 命令显示没有代码高亮,也不能一眼定位到正在执行的那行代码在整个代码中的位置。可以使用 gdb 自带的 gdbtui。


二、使用方法

1. 开启gdb tui模式

方法一:使用 gdbtui -q <需要调试的程序名> 来开启一个调试。
方法二:直接使用 gdb 调试代码,在需要的时候使用切换键 ctrl + x + a 调出 gdbtui 。

2. gdb tui模式下有4个窗口

(cmd) command 命令窗口,可以键入调试命令。
(src) source 源代码窗口, 显示当前行、断点等信息。
(asm) assembly 汇编代码窗口。
(reg) register 寄存器窗口。

默认情况下,gdbtui 模式下会显示 command 窗口和 source 窗口。可以通过 layout <窗口类型> 命令来进行选择自己需要的窗口,例如在 cmd 窗口输入 layout asm 则可以切换到汇编代码窗口。


3. layout 命令还可以用来修改窗口布局,可以在 cmd 窗口中输入 help layout,常见的有:

Usage: layout prev | next | <layout_name>
Layout names are:
    src : Displays source and command windows.
    asm : Displays disassembly and command windows.
    split : Displays source, disassembly and command windows.
    regs : Displays register window. If existing layout is source/command or assembly/command, the register window is displayed. If the
    source/assembly/command (split) is displayed, the register window is displayed with the window that has current logical focus.

 

4. winheight 命令可以用来修改各个窗口的大小。如下所示:

(gdb) help winheight
Set the height of a specified window.
Usage: winheight <win_name> [+ | -] <#lines>
Window names are:
    src : the source window
    cmd : the command window
    asm : the disassembly window
    regs : the register display

使用示例:

winheight src + 5 用于将代码窗口的高度扩大5行代码;winheight src - 4 用于将代码窗口的高度减小4代码。

当前 gdb tui 窗口放大或者缩小以后,gdbtui 窗口中的内容不会自己刷新以适应新的窗口尺寸,可以通过 space 键强行刷新 gdbtui 窗口。


5. 窗口焦点切换

在默认设置下,方向键和 PageUp/PageDown 都是用来控制 gdbtui 的 src 窗口的,所以,我们常用的上下键用来显示前一条命令和后一条命令的功能就没有了,不过这个时候我们可以通过 Ctrl+n/ctrl+p 来获取这个功能。
注意:当我们通过方向键调整了 gdbtui 的 src 窗口以后,可以通过 update 命令重新把焦点定位到当前执行的代码上。

可以通过 focus 命令来调整焦点位置,默认情况下是在 src 窗口,通过 focus next 命令, 焦点就移到 cmd 窗口了,这时候就可以像以前一样,通过方向键来切换到上一条命令和下一条命令。同理,也可以使用 focus prev 切回到 src 窗口。如果焦点不在 src 窗口上,我们就不能通过方向键来浏览源码。

(gdb) help focus
help focus
Set focus to named window or next/prev window.
Usage: focus {<win> | next | prev}
Valid Window names are:
    src : the source window
    asm : the disassembly window
    regs : the register display
    cmd : the command window

 

===> 实测并不好用。

 

posted on 2022-11-08 11:57  Hello-World3  阅读(1591)  评论(0编辑  收藏  举报

导航