如何解决 WinDbg 中的错误"Can't switch processors on a single processor kernel triage dump"?



我使用收集用户模式转储中描述的默认参数生成了一个小型转储。

当系统挂起右CTRL+SCROLL LOCK+SCROLL LOCK

[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServiceskbdhidParameters]
"CrashOnCtrlScroll"=dword:00000001

因此,WinDbg在命令0: kd> !analyze -v之后向我显示的调用堆栈是从kbdhid设备驱动程序执行的线程之一。

当我试图切换到另一个处理器时,我得到了错误:

0: kd> ~1
Can't switch processors on a single processor kernel triage dump

如何解决此错误?

什么是"单处理器内核分类转储"?如果我用谷歌搜索,我会得到3或4个结果。。。没有更多,也许微软的人可以在这里提供很大的帮助:-(。

CustomDumpFlags是否有一些特定的值需要我设置?请参见MINIDUMP_TYPE枚举。

我知道我的系统是多处理器的,WinDbg证实了这一点:

0: kd> ~8
8 is not a valid processor number
0: kd> ~7
Can't switch processors on a single processor kernel triage dump

单处理器内核转储或内核分类转储是一种功能

您可以在其中收集用户模式进程的内核模式堆栈跟踪

在一台没有在iirc上使用/DEBUG从vista+启动的机器上

您也可以使用kdbgctrl 收集此转储

D:>tasklist | grep -i edge
xxxxxxxxxxxxxxxxxxxxxx
MicrosoftEdgeCP.exe          12588 Console                    5     41,892 K
MicrosoftEdgeCP.exe           9152 Console                    5   1,49,064 K
xxxxxxxxxxxxxx
D:>kdbgctrl -td 9152 edgy.dmp
Dump created in edgy.dmp, 1048564 bytes
D:>file edgy.dmp
edgy.dmp: MS Windows 64bit crash dump, 1018708 pages

运行!process -1 1f命令以获取当前进程的所有线程的堆栈此转储中只有一个进程内核内存可用!进程0 0不起作用

它不是完整的内核内存转储,可能没有关于任何其他处理器堆栈以及的信息

快跑!cpuid只有关于0处理器的信息才会出现在这个转储中

0: kd> !cpuid
CP  F/M/S  Manufacturer     MHz
0  6,142,9  GenuineIntel    2304
Unable to get information for processor 1
Unable to get information for processor 2
Unable to get information for processor 3
0: kd>  

或irql

0: kd> !irql 0
Debugger saved IRQL for processor 0x0 -- 0 (LOW_LEVEL)
0: kd> !irql 1
Cannot get PRCB address from processor 0x1
0: kd> !irql 2
Cannot get PRCB address from processor 0x2
0: kd> !irql 3
Cannot get PRCB address from processor 0x3
0: kd>                                      

相关内容

  • 没有找到相关文章

最新更新