gdb:确定没有源的寄存器内容。

时间:2018-10-29 19:52:36

标签: gdb

浏览核心文件,我可以将其范围缩小到特定的故障点并检查寄存器。 通常,寄存器值为空,这很好地表明已传递了空值并导致了问题。

问题是,如果有一个有效的地址怎么办?

可以在没有来源的情况下确定该地址的内容吗?

如果没有源代码,是否可以确定地址是否指向某个结构,如果可以,则可以确定该结构的所有属性?

1 个答案:

答案 0 :(得分:1)

  

可以在没有来源的情况下确定该地址的内容吗?

绝对。假设$rax的值为0x12345678。您可以使用(gdb) x/gx $rax

检查该地址处的
  

没有来源,就可以确定地址是否指向结构

通常:不。如果结构需要一定的对齐方式并且地址未正确对齐,则可以确定该地址不是指向该结构的。或者如果地址指向例如页面的最后4个字节,并且未映射下一页,并且结构大小大于4个字节。

  

如果可以的话,您是否能够确定该结构的所有属性?

如果您确实认为地址指向某个结构,则可以检查其内容。有关如何在GDB中方便地进行操作,请参见this answer