use*_*228 6 windows multithreading kernel windbg
有没有人知道如何在内核调试时列出WinDbg中的所有线程.我发现旧的参考文献说"〜",但这不起作用.
具体来说,我希望找到导致事件的线程的ID,即断点.
谢谢.
~仅适用于用户模式.要列出系统中的所有线程,!process 0 1我记得(已经过了一段时间).
"具体来说,我希望找到导致事件的线程的ID,即断点."
从内核模式开始,这个语句没有多大意义.你能描述一下你的场景是什么吗?
编辑:啊,现在我明白了.你想知道你现在在哪个线程.给!thread一展身手.
您始终可以使用@ $ thread伪寄存器来引用当前线程对象:
0: kd> r @$thread
$thread=fffff80002c02cc0
Run Code Online (Sandbox Code Playgroud)
如果你想要线程的ID,你需要将其从ETHREAD中挖掘出来.幸运的是,如果您正在使用C++评估器,则@ $线程将被键入为指向ETHREAD的指针:
0: kd> ?? @$thread->Cid
struct _CLIENT_ID
+0x000 UniqueProcess : 0x00000000`00001408 Void
+0x008 UniqueThread : 0x00000000`0000144c Void
Run Code Online (Sandbox Code Playgroud)
斯科特