如何从windbg内核调试器检查用户线程调用堆栈?

如何从windbg内核调试器检查用户线程调用堆栈?,windbg,Windbg,我的exe测试程序一旦调用了CancelIo,它就阻塞了,我想调查它阻塞了哪个函数,所以,当它阻塞时,我使用windbg远程闯入机器,并试图找到它 如图中标记为黄色,my EXE有两个线程,FFFFF A8013958B60和FFFFF A8013AA1060。我已经知道fffff a8013aa1060是调用CancelIo的 那么,如何显示线程的当前调用堆栈fffff a8013aa1060? 试试这个命令序列 .process /i fffffa8014c25170 g .thread

我的exe测试程序一旦调用了
CancelIo
,它就阻塞了,我想调查它阻塞了哪个函数,所以,当它阻塞时,我使用windbg远程闯入机器,并试图找到它

如图中标记为黄色,my EXE有两个线程,
FFFFF A8013958B60
FFFFF A8013AA1060
。我已经知道
fffff a8013aa1060
是调用
CancelIo

那么,如何显示线程的当前调用堆栈
fffff a8013aa1060


试试这个命令序列

.process /i fffffa8014c25170 
g
.thread fffffa8013aa1060
.reload /user
k
WinDbg文档摘录:

/i […]指定对进程进行入侵式调试。这种调试意味着目标计算机的操作系统实际上激活了指定的进程。[…]如果使用/i,则必须使用g(Go)命令来执行目标。几秒钟后,目标返回到调试器,指定的进程处于活动状态并用于进程上下文


试试这个命令序列

.process /i fffffa8014c25170 
g
.thread fffffa8013aa1060
.reload /user
k
WinDbg文档摘录:

/i […]指定对进程进行入侵式调试。这种调试意味着目标计算机的操作系统实际上激活了指定的进程。[…]如果使用/i,则必须使用g(Go)命令来执行目标。几秒钟后,目标返回到调试器,指定的进程处于活动状态并用于进程上下文


您可以尝试
~[0724]s
切换到该线程吗?然后您可以按正常方式执行
kb
以显示调用stack@EdChumWinDbg帮助说明“在内核模式下,您不能通过使用线程标识符来控制线程。”您可以尝试
~[0724]s
切换到该线程吗,然后,您可以按正常方式执行
kb
,以显示呼叫stack@EdChumWinDbg帮助说明“在内核模式下,您无法通过使用线程标识符来控制线程。”因此这只适用于实时调试。有没有机会从验尸后的坠机垃圾堆里得到这些信息
/p/r
可能会这样做,这仅适用于实时调试。有没有机会从验尸后的坠机垃圾堆里得到这些信息<代码>/p/r可以