Windbg“!locks”命令不起作用,我还能获取信息吗?
Windbg "!locks" command doesn't work, can I get information anyway?
调试转储文件时,我需要定期检查锁,为此我使用 windbg
扩展命令 !locks
。当一切顺利时,这会提供如下输出:
CritSec +54a8a8 at 0054a8a8
WaiterWoken No
LockCount 0
RecursionCount 1
OwningThread 13d8
EntryCount 0
ContentionCount 0
*** Locked
CritSec +b73a8d at 00135e8d
WaiterWoken No
LockCount 0
RecursionCount 1
OwningThread 55f3
EntryCount 0
ContentionCount 0
*** Locked
...
Scanned 662 critical sections
但是,有时我会收到以下错误消息:
Stopped scanning because of problem reading critical section debug info
Scanned 7 critical sections
有没有可能得到一些信息? (例如,critical section debug info
在哪里,如果没有 !locks
命令,我如何读取它,...)
!locks
更好的替代方法是使用 !cs -s -l -o
参见 !cs
这将显示所有锁定的关键部分、所有者堆栈跟踪和关键部分堆栈跟踪,您可以省略-l
如果你想要所有关键部分。您可能需要使用 gflags
启用用户模式堆栈跟踪 !gflag +ust
记得在不需要时将其删除 !glag -ust
.
要显示临界区信息,如果您有地址,您可以这样做:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/displaying-a-critical-section
所以 !critsec ADDRESS
或者使用显示类型命令 dt
dt RTL_CRITICAL_SECTION ADDRESS
如果你有地址就可以了。
调试转储文件时,我需要定期检查锁,为此我使用 windbg
扩展命令 !locks
。当一切顺利时,这会提供如下输出:
CritSec +54a8a8 at 0054a8a8
WaiterWoken No
LockCount 0
RecursionCount 1
OwningThread 13d8
EntryCount 0
ContentionCount 0
*** Locked
CritSec +b73a8d at 00135e8d
WaiterWoken No
LockCount 0
RecursionCount 1
OwningThread 55f3
EntryCount 0
ContentionCount 0
*** Locked
...
Scanned 662 critical sections
但是,有时我会收到以下错误消息:
Stopped scanning because of problem reading critical section debug info
Scanned 7 critical sections
有没有可能得到一些信息? (例如,critical section debug info
在哪里,如果没有 !locks
命令,我如何读取它,...)
!locks
更好的替代方法是使用 !cs -s -l -o
参见 !cs
这将显示所有锁定的关键部分、所有者堆栈跟踪和关键部分堆栈跟踪,您可以省略-l
如果你想要所有关键部分。您可能需要使用 gflags
启用用户模式堆栈跟踪 !gflag +ust
记得在不需要时将其删除 !glag -ust
.
要显示临界区信息,如果您有地址,您可以这样做:https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/displaying-a-critical-section
所以 !critsec ADDRESS
或者使用显示类型命令 dt
dt RTL_CRITICAL_SECTION ADDRESS
如果你有地址就可以了。