如何解决十六进制地址上的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 举报,一经查实,本站将立刻删除。