我如何解决WinDbg中的错误“无法在单处理器内核分类转储中切换处理器?”

问题描述 投票:1回答:1

我有一个使用Collecting User-Mode Dumps中描述的默认参数生成的小型转储。

当系统通过以下寄存器键中的右CTRL + SCROLL LOCK + SCROLL LOCK挂起时,生成了转储:

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\kbdhid\Parameters]
"CrashOnCtrlScroll"=dword:00000001

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

[当我尝试切换到其他处理器时,出现错误:

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

我该如何解决此错误?

什么是“单处理器内核分类转储”?如果我使用Google搜索,我将获得3或4个结果...更多,也许来自Microsoft的人可以在这里提供很大的帮助:-)。

我必须设置CustomDumpFlags的某些特定值吗?参见MINIDUMP_TYPE enumeration

我知道我的系统是多处理器,并且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
windbg windows-7-x64 minidump postmortem-debugging
1个回答
2
投票

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

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

在未使用vista +的iirc上的/ DEBUG引导的计算机上]

您也可以使用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命令以获取当前进程的所有线程的堆栈此转储中仅一个进程内核内存可用!process 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>                                      
© www.soinside.com 2019 - 2024. All rights reserved.