浏览核心文件,我可以将其范围缩小到特定的故障点并检查寄存器。 通常,寄存器值为空,这很好地表明已传递了空值并导致了问题。
问题是,如果有一个有效的地址怎么办?
可以在没有来源的情况下确定该地址的内容吗?
如果没有源代码,是否可以确定地址是否指向某个结构,如果可以,则可以确定该结构的所有属性?
答案 0 :(得分:1)
可以在没有来源的情况下确定该地址的内容吗?
绝对。假设$rax
的值为0x12345678
。您可以使用(gdb) x/gx $rax
没有来源,就可以确定地址是否指向结构
通常:不。如果结构需要一定的对齐方式并且地址未正确对齐,则可以确定该地址不是指向该结构的。或者如果地址指向例如页面的最后4个字节,并且未映射下一页,并且结构大小大于4个字节。
如果可以的话,您是否能够确定该结构的所有属性?
如果您确实认为地址指向某个结构,则可以检查其内容。有关如何在GDB中方便地进行操作,请参见this answer。