首页 > 解决方案 > WinDbg:地址中的冒号是什么意思?

问题描述

我有一个故障转储,其中显示以下异常信息:

0:000> .ecxr
eax=00000000 ebx=00000001 ecx=000000dc edx=000032f0 esi=00000020 edi=78746341
eip=00000000 esp=00000007 ebp=00000020 iopl=0         nv up di pl nz na po cy
cs=0014  ss=0034  ds=0000  es=1000  fs=df5c  gs=0000             efl=00000001
0014:00000000 ??              ???

为什么例外地址显示为0014:00000000,而不仅仅是00000000?据我了解,0014是代码段,但我没有找到任何有关语法的文档。

另外,有没有办法将此语法转换为普通的绝对地址?

标签: x86windbgmemory-addressmemory-segmentation

解决方案


是的,seg:off是 100% 标准符号。它只是向您展示完整的 CS:EIP 价值。

CS base 是0除非你做了一些非常奇怪的事情(例如retf,在 CS 中弹出一些东西,碰巧索引一个非零基数的 GDT 条目,如果甚至有一个)。

所以线性地址就是00000000. 例如,您尝试跳转到 NULL 函数指针或其他内容,或者尝试ret在 ESP 指向 0 而不是您的返回地址时跳转。


推荐阅读