windbg找出指定驱动所在的内核调用栈

背景

诸如Windows卡死或应用程序不明原因卡住等问题,如果我们怀疑是某个驱动导致,我们可以在dmp中查看此驱动所在的内核调用栈,看看是否此驱动调用了某些Windows同步函数而卡住。

方法

!stacks 2 [驱动名]
例如我怀疑是RegFilter.sys导致的Windows卡住,我可在系统dump中执行

0: kd> !stacks 2 RegFilter
Proc.Thread  .Thread  Ticks   ThreadState Blocker
                            [fffff80004246680 Idle]
                            [fffffa80c7b7b5c0 System]
   4.0001f4  fffffa80ca29f930 00075f1 Blocked    nt!KiSwapContext+0x7a
                                        nt!KiCommitThreadWait+0x1d2
                                        nt!KeWaitForSingleObject+0x1a3
                                        RegFilter+0x17d6d
                                        nt!PspSystemThreadStartup+0x194
                                        nt!KiStartSystemThread+0x16

                            [fffffa80ca530b00 smss.exe]

                            [fffffa80cb11bb00 csrss.exe]

                            [fffffa80cb50db00 wininit.exe]

                            [fffffa80cb35ab00 csrss.exe]

                            [fffffa80cb594b00 winlogon.exe]

                            [fffffa80cb59c060 services.exe]

                            [fffffa80cb5b1060 lsass.exe]

                            [fffffa80cb5b9530 lsm.exe]

                            [fffffa80cb53b060 svchost.exe]
 354.00034c  fffffa80cb62c060 002bca8 Blocked    nt!KiSwapContext+0x7a
                                        nt!KiCommitThreadWait+0x1d2
                                        nt!KeWaitForSingleObject+0x1a3
                                        nt!KiAcquireFastMutex+0x4e
                                        nt!ExAcquireFastMutex+0x45
                                        RegFilter+0x59cd
                                        RegFilter+0x8781
                                        RegFilter+0x9cec
                                        nt!CmpCallCallBacks+0x1c0
                                        nt! ?? ::NNGAKEGL::`string'+0x38bd0
                                        nt!KiSystemServiceCopyEnd+0x13
                                        +0x77069aca
……

留意此处的Blocked。线程fffffa80ca29f930fffffa80cb62c060 002bca8他们的调用栈就有RegFilter调用nt!ExAcquireFastMutex进而卡住。
下一步就联系RegFilter的开发者,反馈此类卡住在许多线程中存在是否正常。

你可能感兴趣的:(Windows,windows)