如何读取kgdb中的GDTR和LDTR?
How to read GDTR and LDTR in kgdb?
This question 处理为什么你不能在用户模式 GDB 中读取 GDTR 和 LDTR。但是我不明白为什么在调试 Linux 内核(编译了 KGDB)时,在另一台带有串行电缆的机器上使用 GDB 时不可能。
被调试的内核应该能够告诉调试器 GDTR 和 LDTR 的值,但似乎没有任何 GDB 命令可以做到这一点。这有充分的理由吗?只是没有人实施过吗?
正如你所说,没有人实施它。
gdb
特别是不考虑那些有效的寄存器,因此内核调试接口甚至不会尝试发送它们。
除非您愿意更改 gdb
,否则您必须使用变通方法来获取该信息。我能想到的一种可能性是 ThreadExtraInfo
命令,它应该能够发送在 gdb
中打印的任意字符串消息。所以您可以在 kernel/debug/gdbstub.c
.
中添加该信息
This question 处理为什么你不能在用户模式 GDB 中读取 GDTR 和 LDTR。但是我不明白为什么在调试 Linux 内核(编译了 KGDB)时,在另一台带有串行电缆的机器上使用 GDB 时不可能。
被调试的内核应该能够告诉调试器 GDTR 和 LDTR 的值,但似乎没有任何 GDB 命令可以做到这一点。这有充分的理由吗?只是没有人实施过吗?
正如你所说,没有人实施它。
gdb
特别是不考虑那些有效的寄存器,因此内核调试接口甚至不会尝试发送它们。
除非您愿意更改 gdb
,否则您必须使用变通方法来获取该信息。我能想到的一种可能性是 ThreadExtraInfo
命令,它应该能够发送在 gdb
中打印的任意字符串消息。所以您可以在 kernel/debug/gdbstub.c
.