Hexagon GDB Debugger介绍(50)

240 篇文章 11 订阅

5.2.4 TUI 指定命令

TUI 具有控制文本窗口的特定命令。 这些命令始终可用,即它们不依赖于调试器运行的当前终端模式。 当调试器处于标准模式时,使用这些命令会自动切换到 TUI 模式。

info win
列出并给出所有显示窗口的大小。
layout next
显示下一个布局。
layout prev
显示之前的布局。
layout src
仅显示源窗口。
layout asm
仅显示汇编窗口。
layout split
显示源和汇编窗口。
layout regs
与源或汇编窗口一起显示寄存器窗口。
focus ( next | prev | src | asm | regs | split )
将焦点设置到命名窗口。 此命令允许更改活动窗口,以便滚动键可以影响到另一个窗口。
refresh
刷新屏幕。 这类似于使用 Ctrl-L。
tui reg float
在寄存器窗口中显示浮点寄存器。
tui reg general
在寄存器窗口中显示通用寄存器。
tui reg next
显示下一个寄存器组。 寄存器组列表及其顺序是特定于目标的。 预定义的寄存器组如下:general,float, system, vector, all, save, restore.
tui reg system
在寄存器窗口中显示系统寄存器。
update
更新源窗口和当前执行点。
winheight name +count
winheight name -count

通过计数行更改窗口名称的高度。 正数会增加高度,而负数会减少高度。

5.2.5 TUI 配置变量

TUI 有几个配置变量,用于控制终端上窗口的外观。

set tui border-kind kind
选择源、汇编和注册窗口的边框外观。 可能的值如下:

 	space 使用空格字符绘制边框。
    ascii  使用 ascii 字符 + - 和 |  绘制边界。
    acs 使用备用字符集绘制边框。  如果终端支持,则使用字符线图形绘制边框。

set tui active-border-mode mode
选择属性以显示活动窗口的边框。可能是如下值:normal, standout, reverse, half, half-standout, bold and bold-standout.

set tui border-mode mode
选择属性以显示其他窗口的边框。 模式可以是以下之一:
normal 使用普通属性来显示边框。
standout 使用突出模式。
reverse 使用反向视频模式。
half 使用半亮模式。
half-standout 使用半亮和突出模式。
bold 使用额外明亮或粗体模式。
bold-standout 使用额外明亮粗体和突出的模式。

5.3 在 GNU Emacs 下使用调试器

一个特殊的界面允许你使用 GNU Emacs 查看(和编辑)你正在调试的程序的源文件。

要使用此接口,请在 Emacs 中使用命令 M-x gdb。 将要调试的可执行文件作为参数提供。 此命令将调试器作为 Emacs 的子进程启动,通过新创建的 Emacs 缓冲区输入和输出。

在 Emacs 下使用调试器和正常使用调试器一样,除了两点:

  • 所有“终端”输入和输出都通过 Emacs 缓冲区。
    这既适用于调试器命令及其输出,也适用于正在调试的程序完成的输入和输出。
    这很有用,因为这意味着可以复制先前命令的文本并再次输入它们; 甚至可以以这种方式使用部分输出。
    Emacs 的 Shell 模式的所有功能都可用于与你的程序进行交互。 特别是,可以按通常的方式发送信号:例如,Ctrl-c Ctrl-c 表示中断,Ctrl-c Ctrl-z 表示停止。

  • 调试器通过 Emacs 显示源代码。
    每次调试器显示堆栈帧时,Emacs 会自动查找该帧的源文件,并在当前行的左边距放置一个箭头 (=>)。 Emacs 使用单独的缓冲区来显示源代码,并拆分屏幕以显示调试器会话和源代码。

显式调试器列表或搜索命令仍会像往常一样产生输出,但你可能没有理由在 Emacs 中使用它们。

如果你在提示输入 M-x gdb 参数时指定了绝对文件名,则 Emacs 会将你当前的工作目录设置为你的程序所在的位置。 如果你只指定文件名,那么 Emacs 会将你当前的工作目录设置为与前一个缓冲区关联的目录。 在这种情况下,调试器可能会通过搜索你环境的 PATH 变量来找到你的程序,但在某些操作系统上,它可能找不到源代码。 因此,尽管调试器输入和输出会话正常进行,但辅助缓冲区不显示当前源和执行行。

调试器的初始工作目录打印在调试器 I/O 缓冲区的顶行,这用作指定调试器要操作的文件的命令的默认值(第 2.18.1 节)。

默认情况下,Mx gdb 调用名为 gdb 的程序。 如果你需要以不同的名称调用调试器(例如,如果你保留多个配置,使用不同的名称),你可以自定义 Emacs 变量 gud-gdb-command-name 以运行你想要的那个。

在调试器 I/O 缓冲区中,除了标准的 Shell 模式命令之外,你还可以使用这些特殊的 Emacs 命令:
Ctrl-h m 描述 Emacs 的调试器模式的特性。
Ctrl-c Ctrl-s 执行到另一个源代码行,如调试器步骤命令; 还更新显示窗口以显示当前文件和位置。
Ctrl-c Ctrl-n 执行到此函数中的下一个源代码行,跳过所有函数调用,如调试器下一个命令。 然后更新显示窗口以显示当前文件和位置。
Ctrl-c Ctrl-i 执行一条指令,如调试器 stepi 命令; 相应地更新显示窗口。
Ctrl-c Ctrl-f 执行直到退出选定的堆栈帧,就像调试器finish命令一样。
Ctrl-c Ctrl-r 继续执行你的程序,就像调试器的 continue 命令一样。
Ctrl-c < 增加由数字参数指示的帧数(参见 GNU Emacs 手册),就像 debugger up 命令一样。
Ctrl-c > 降低由数字参数指示的帧数,例如 debugger down 命令。

在任何源文件中,Emacs 命令 Ctrl-x SPC (gud-break) 告诉调试器在源代码行上设置断点。

如果你键入 M-x speedbar,Emacs 会显示一个单独的帧,当调试器 I/O 缓冲区为当前时,该帧显示回溯。 将点移动到堆栈中的任何帧并键入 使其成为当前帧并在源缓冲区中显示关联的源。 或者,单击Mouse-2 使所选帧成为当前帧。

如果你不小心删除了源显示缓冲区,一个简单的恢复方法是在调试器缓冲区中键入命令 f,请求帧显示; 当你在 Emacs 下运行时,这会在必要时重新创建源缓冲区以显示当前帧的上下文。

Emacs 中显示的源文件位于普通的 Emacs 缓冲区中,它们以通常的方式访问源文件。 如果需要,你可以使用这些缓冲区编辑文件; 但请记住,调试器通过行号与 Emacs 进行通信。 如果在文本中添加或删除行,调试器知道的行号将不再与代码正确对应。

这里给出的描述是针对 GNU Emacs 21.3 版的,Emacs 手册中给出了它与调试器交互的更详细的描述(参见 GNU Emacs 手册)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值