我正在阅读有关跳转表的课程示例。他们致电gdb x/8g 0x123456
结果输出如下:
0x123456 0x000000000000134234 0x0000000000005f424
0x123487 0x0000000000001dd1ac 0x000000000000ef327
我认为跳转表将地址映射到应该执行的代码的地址。那么为什么有3列(不应该是2?)。
答案 0 :(得分:1)
为什么有3列(不应该是2?)
您没有粘贴真正的GDB输出,如下所示:
0x123450 0x000000000000134234 0x0000000000005f424
0x123460 0x0000000000001dd1ac 0x000000000000ef327
(第一栏不同)。在编程中,详细信息重要。
如果你让终端更窄,那么你将获得2列,如下所示:
0x123450 0x000000000000134234
0x123458 0x0000000000005f424
0x123460 0x0000000000001dd1ac
0x123468 0x000000000000ef327
正如KerrekSB建议的那样,阅读GDB手册以了解x
的作用。提示:第一列并不重要 - 它就是表本身的存储位置。