5
I want to use gdb to see my GDTR/LDTR/TTR and segment register

不可见部分(x86),所以在 gdb 中我输入“p/x $gdtr”....等,但结果是“$6 = 值不能转换为整数”,在 gdb 中我输入“p/x $cs”唯一的结果是 CS,只是可见的部分

can anyone tell me how to view these value??

感谢您的回答

4

1 回答 1

5

如果 GDB 有这样的功能,那么这个功能只有在 GDB 能够使用 SGDT 指令读取 GDTR 时才能工作。这意味着 GDB 必须在 ring 0 中运行。

Linux、Windows 和 Mac OS 都不允许在 ring 0 中运行应用程序(如 GDB),因此它不适用于本地应用程序。

如果您使用远程调试(您使用 RS-232 或 TCP/IP 连接调试另一台计算机或虚拟机):用于远程调试的默认协议未指定用于读取 GDTR 的数据包。

在远程调试的情况下,后端(被调试计算机上的一段代码)可以使用“monitor”命令定义非标准特性。您可以使用“monitor readspr gdtr”之类的命令来实现这样的功能。

于 2015-02-01T14:29:17.030 回答