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

标签 assembly linux-kernel x86 gdb gdt

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??

感谢您的回答

最佳答案

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

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

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

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

关于assembly - 我可以在 gdb 下打印 gdtr 和 gdt 描述符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28263624/

相关文章:

struct - 结构与数组的对齐规则冲突

c - 将表指针从 C 传递到汇编函数

linux - 为什么在没有 DMA 的情况下用套接字拼接不能提高性能?

visual-c++ - 为什么 MSVC 使用 SSE2 指令处理这种琐碎的事情?

c - 为 makefiles/kconfig 中的变量赋值

c - BCM2708 (RPi) Rasbpian FIQ 未触发

c++ - Visual Studio 2012 原生 C++ DLL x86 编译

c - 在 L1 缓存 : only getting 62% 中获取 Haswell 上的峰值带宽

assembly - 4字节的汇编指令如何编码4字节的内存地址?

assembly - 如何延迟 avr 微 Controller 的组装?