0x%08lx是什么?

问题描述 投票:0回答:3

最近我在工作中的 XP 机器上出现了很多蓝屏。事实上,我下载了 Windows(x86) 的调试工具并一直在分析故障转储。事实上,我已经将转储更改为仅限迷你,否则我可能每周都会花费半个工作日来等待蓝屏完成记录详细的崩溃日志。

几乎无一例外,每个转储都告诉我蓝屏的原因是某种内存分配不当或错误引用,并且 0x%08lx 处的内存引用了 0x%08lx 并且不可能是 %s。

出于好奇,我在 Google 中输入了“0x%08lx”,发现相当多的故障转储都包含这个奇怪的消息。我是否可以认为 0x%08lx 是一个占位符,代表一些应该有意义的东西? “%s”是结论句“内存不可能是 %s”的一部分,看起来肯定缺少变量或其他东西。

有谁知道这条消息的出处吗?它真的应该有用吗?它应该是什么样子?

这并不是我一直在解决的主要问题。奇怪的是,这么多人在这么多故障转储中看到了这一点,却没有人说:“哦,故障转储没有正确完成该消息,它应该读取......”

我只是好奇是否有人知道这个奇怪的错误消息人工制品的目的。

debugging crash-dumps
3个回答
11
投票

0x%08lx
%s
几乎肯定是 C 函数 sprintf格式说明符。但看起来驱动程序开发人员在错误处理代码中所做的工作与在关键代码中所做的一样好,因为您永远不应该在 GUI 中看到这些说明符 - 它们应该被替换为有意义的值。

0x%08lx
应该变成类似“0xE001D4AB”的东西,一个十六进制 32 位指针值。

%s
应替换为另一个字符串,在本例中为描述。类似的东西

引用0xE001D4AB处的内存 0xE005123F 并且无法读取

请注意,这些值是我编造的。基本上,发生了内核模式访问冲突。希望在迷你转储中您可以看到哪个模块导致了它并卸载/更新/无论它。


9
投票

我相信它只是内存地址的占位符。

0x
是一个字符串前缀,用于通知用户它是十六进制,而
%08lx
是长整型 (
l
) 转换为十六进制 (
x
) 的实际占位符,并填充 8 个零 (
08
)。


0
投票

我不是程序员,但我尝试阅读许多转储和临时文件。历年来的档案。在过去的两天里,我从Win8.1升级到Win10后似乎遇到了问题。从我刚刚查看的 ctfmon 转储来看,它看起来像是指的是 Win8.1 + Win10 的组合。 (“赢X”?) 作为; “081x”。说应该是“081x”,而‘不是’,是“‘0x081x’”!此外,它看起来像是我的 PC 上的恶意软件(来自未经请求的 atieexx?驱动程序),导致了 ctfmon 的违规,“突然出现”,并且驱动程序和 CTF 加载程序都作为程序运行。提到“远程文本输入”,(所有远程服务、服务器等都被禁用!)大约20次,后面跟着很多?,还有缓冲区溢出、异常,凡是你能想到的!似乎问题是“0”,x 081x(Win:08.1/10。)%ws,(网络套接字。)好像远程计算机是“0”系统?我只是重新编程,因为我在尝试运行虚拟盒子时偶然发现了一个令人讨厌的、无法检测的远程控制黑客。 (蓝屏。)“跳跳虎”,我相信,(韦伯博士)。在程序数据中留下了一个名为“krosqm”的文件! (我的猜测是“Kollide-远程-操作系统-安静-管理?)看起来它仍然隐藏在某个地方!不得不扔掉2个路由器!无法恢复出厂设置,无线停止工作并闪烁黄灯!邪恶和讨厌。GMER 是唯一看到它的东西。以为 GRUB 是导致 MBR 未知的原因,但据说“好吧”。 ASWER MBR 无法修复。现在就开始爆发BOOTICE吧!但我知道什么? 我不敢相信没有人真正知道这意味着什么!大家都在猜测! 我只是想猜测一下。

© www.soinside.com 2019 - 2024. All rights reserved.