微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

十六进制地址上的windbg dd命令?

如何解决十六进制地址上的windbg dd命令?

当我在十六进制地址a66e920上执行dd命令时,WINDBG中以下输出的含义是什么

0:001> dd a66e920
00000000`0a66e920  ???????? ???????? ???????? ????????
00000000`0a66e930  ???????? ???????? ???????? ????????
00000000`0a66e940  ???????? ???????? ???????? ????????
00000000`0a66e950  ???????? ???????? ???????? ????????
00000000`0a66e960  ???????? ???????? ???????? ????????
00000000`0a66e970  ???????? ???????? ???????? ????????
00000000`0a66e980  ???????? ???????? ???????? ????????
00000000`0a66e990  ???????? ???????? ???????? ???????

这是否意味着十六进制地址为NULL? 我是windbg的新手:

以下是我们的代码段,重命名的变量,函数和结构名称,出于隐私目的,由于hb无效,因此在访问hb-> buck_magic时会崩溃。

`#define BUCK_MAGIC 0x4255434b  /* "BUCK"   */

typedef struct {
   Card     buck_magic;
   Card     buck_size;
   Card     buck_used;
   List_obj **  buck_list;
} Bucket;



static Bucket *bucket_get( Ptr d )
{
   Bucket *hb;
   hb = *(Bucket **)d;
   
   if ( hb->buck_magic == BUCK_MAGIC ) return(hb);
   return(0);

}` 

崩溃的最新帧输出

0:001> 
00000000`012af220 char * d = 0x00000000`09630580 "???"
00000000`012af200 struct Bucket * hb = 0x00000000`0a103b80

0:001> dx -r1 ((code_bin!Bucket *)0xa103b80)
((code_bin!Bucket *)0xa103b80): 0xa103b80 [Type: Bucket *]
    [+0x000] buck_magic : Unable to read memory at Address 0xa103b80
    [+0x004] buck_size  : Unable to read memory at Address 0xa103b84
    [+0x008] buck_used  : Unable to read memory at Address 0xa103b88
    [+0x010] buck_list  : Unable to read memory at Address 0xa103b90
    
0:001> dx -r1 ((code_bin!char *)0x9630580)
((code_bin!char *)0x9630580): 0x9630580 : "???" [Type: char *]

0:001> dd 09630580
00000000`09630580  0a103b80 00000000 0a1253c0 00000000
00000000`09630590  09197bb0 00000000 06d7f980 00000000
00000000`096305a0  091afa30 00000000 091aeb30 00000000
00000000`096305b0  0a0ffbc0 00000000 091b10b0 00000000
00000000`096305c0  091a6f70 00000000 0a13bbc0 00000000
00000000`096305d0  0a13bbc0 00000000 0a17df10 00000000
00000000`096305e0  062b5570 00000000 000d760e 80000308
00000000`096305f0  00009aaf 00061aaf 00095aaf 000a9aaf
0:001> dp 09630580
00000000`09630580  00000000`0a103b80 00000000`0a1253c0
00000000`09630590  00000000`09197bb0 00000000`06d7f980
00000000`096305a0  00000000`091afa30 00000000`091aeb30
00000000`096305b0  00000000`0a0ffbc0 00000000`091b10b0
00000000`096305c0  00000000`091a6f70 00000000`0a13bbc0
00000000`096305d0  00000000`0a13bbc0 00000000`0a17df10
00000000`096305e0  00000000`062b5570 80000308`000d760e
00000000`096305f0  00061aaf`00009aaf 000a9aaf`00095aaf

0:001> dq 09630580
00000000`09630580  00000000`0a103b80 00000000`0a1253c0
00000000`09630590  00000000`09197bb0 00000000`06d7f980
00000000`096305a0  00000000`091afa30 00000000`091aeb30
00000000`096305b0  00000000`0a0ffbc0 00000000`091b10b0
00000000`096305c0  00000000`091a6f70 00000000`0a13bbc0
00000000`096305d0  00000000`0a13bbc0 00000000`0a17df10
00000000`096305e0  00000000`062b5570 80000308`000d760e
00000000`096305f0  00061aaf`00009aaf 000a9aaf`00095aaf
0:001> dp 0a103b80 
00000000`0a103b80  ????????`???????? ????????`????????
00000000`0a103b90  ????????`???????? ????????`????????
00000000`0a103ba0  ????????`???????? ????????`????????
00000000`0a103bb0  ????????`???????? ????????`????????
00000000`0a103bc0  ????????`???????? ????????`????????
00000000`0a103bd0  ????????`???????? ????????`????????
00000000`0a103be0  ????????`???????? ????????`????????
00000000`0a103bf0  ????????`???????? ????????`????????
0:001> dq 0a103b80 
00000000`0a103b80  ????????`???????? ????????`????????
00000000`0a103b90  ????????`???????? ????????`????????
00000000`0a103ba0  ????????`???????? ????????`????????
00000000`0a103bb0  ????????`???????? ????????`????????
00000000`0a103bc0  ????????`???????? ????????`????????
00000000`0a103bd0  ????????`???????? ????????`????????
00000000`0a103be0  ????????`???????? ????????`????????
00000000`0a103bf0  ????????`???????? ????????`????????
0:001> dd 0a103b80 
00000000`0a103b80  ???????? ???????? ???????? ????????
00000000`0a103b90  ???????? ???????? ???????? ????????
00000000`0a103ba0  ???????? ???????? ???????? ????????
00000000`0a103bb0  ???????? ???????? ???????? ????????
00000000`0a103bc0  ???????? ???????? ???????? ????????
00000000`0a103bd0  ???????? ???????? ???????? ????????
00000000`0a103be0  ???????? ???????? ???????? ????????
00000000`0a103bf0  ???????? ???????? ???????? ????????

解决方法

问号表示内存不可用。

对于故障转储:内存可能不包括在故障转储中,具体取决于用于创建故障转储的MINIDUMP_TYPE。例如。 Procdump有一个选项(-mp)排除大于512 MB的内存区域。如果您是这种情况,请创建具有完整内存的崩溃转储。

对于实时调试:从来没有VirtualAlloc()调用返回该内存部分的操作系统。或者,内存已分配但已VirtualFree() d,因此不再可用。如果程序以读取或写入操作访问内存,则会发生访问冲突(AV)。

问号不等于NULL值。该地址的空指针值为00000000(32位)或00000000'00000000(64位)。

如果您有一个指向此类内存的指针,则也可能是您在Release版本中构建了一个C ++程序,如果您从不初始化指针,它可能会留下一些垃圾(“虚假指针”)。在调试模式下,它们将使用某种内存模式进行初始化。

侧面说明:如果要研究指针,则比dp(32位)或dd(64位)更喜欢使用dq(“转储指针大小的数据”)。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。