【发布时间】:2018-10-30 13:39:56
【问题描述】:
浏览核心文件,我可以将其缩小到特定的故障点并检查寄存器。 通常,寄存器值为空,这很好地表明传递了空值并导致问题。
问题是如果有一个有效的地址会发生什么?
那个地址的内容可以在没有来源的情况下确定吗?
如果没有源,是否可以确定地址是否指向结构,如果是,您是否能够确定结构的所有属性?
【问题讨论】:
标签: gdb
浏览核心文件,我可以将其缩小到特定的故障点并检查寄存器。 通常,寄存器值为空,这很好地表明传递了空值并导致问题。
问题是如果有一个有效的地址会发生什么?
那个地址的内容可以在没有来源的情况下确定吗?
如果没有源,是否可以确定地址是否指向结构,如果是,您是否能够确定结构的所有属性?
【问题讨论】:
标签: gdb
那个地址的内容可以在没有来源的情况下确定吗?
当然。假设$rax 的值为0x12345678。您可以使用(gdb) x/gx $rax
没有源是否可以确定地址是否指向结构
一般来说:没有。如果结构需要一定的对齐,并且地址未正确对齐,您可以确定该地址 不 指向结构。或者如果地址指向例如一页的最后4个字节,下一页没有映射进去,结构体大小大于4个字节。
如果可以,你能确定结构的所有属性吗?
如果您确实认为该地址指向一个结构,则可以检查其内容。请参阅this answer,了解如何在 GDB 中方便地做到这一点。
【讨论】: