我可以在gdb下打印gdtr和gdt描述符吗?

Col*_*lin 5 x86 assembly gdb linux-kernel gdt

I want to use gdb to see my GDTR/LDTR/TTR and segment register
Run Code Online (Sandbox Code Playgroud)

不可见部分(x86)所以在gdb中我输入“p/x $gdtr”...等但结果是“$6 = Value can't be convert to integer”,在gdb中我输入“p/x $cs”唯一的结果是 CS,只是可见的部分

can anyone tell me how to view these value??
Run Code Online (Sandbox Code Playgroud)

感谢您的回答

Mar*_*nau 5

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

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

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

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