最近我在我的XP机顶盒上看到了很多蓝色的屏幕。事实上,我下载了windows的调试工具(X86),并一直在分析崩溃转储。事实上,我已经把转储换成了迷你的,否则我可能每周都要花半天的时间等待着蓝屏完成详细的坠机记录。
几乎无一例外,每个转储都告诉我,蓝屏的原因是内存分配错误或引用错误,而0x%08lx上的内存引用了0x%08lx,不能是%s。
出于好奇,我把"0x%08lx“放入谷歌,发现有相当多的崩溃转储包含了这个奇怪的信息。我是否认为0x%08lx是应该有意义的东西的位置持有者?"%s“,这是结束句”内存不能是%s“的一部分,显然它似乎缺少了一个变量或什么东西。
有人知道这条消息的来源吗?它实际上应该有用吗?认为是什么样的呢?
这不是我一直努力解决的一件大事。奇怪的是,这么多的人会在这么多的垃圾堆中看到这一点,而没有人说:“哦,撞车垃圾堆没有正确地完成这条信息,它应该读.”
我只是好奇是否有人知道这个奇怪的错误消息的目的。
发布于 2011-02-11 11:13:16
我相信它只是内存地址的占位符。0x是一个字符串前缀,它将通知用户它是一个十六进制,而%08lx是一个长int (l)转换为十六进制(x)的实际占位符,填充为8个零(08)。
发布于 2011-02-11 11:12:12
0x%08lx和%s几乎肯定是C函数斯普林特的格式说明符。但是看起来驱动程序开发人员在他们的错误处理代码方面做得很好,就像他们在关键代码中做的一样好,因为您不应该在GUI中看到这些说明符--它们应该被有意义的值所取代。
0x%08lx应该变成类似于"0xE001D4AB“的东西,这是一个十六进制的32位指针值。
%s应该替换为另一个字符串,在本例中是一个描述。有点像
0xE001D4AB上的内存引用了0xE005123F,不能读取。
请注意,我合成了这些值。基本上,出现了内核模式访问冲突。希望在微型转储中,您可以看到是哪个模块导致了它,并卸载/更新/任何其他模块。
https://stackoverflow.com/questions/4968282
复制相似问题