使用windbag分析崩溃转储。需要设置代码以转到当前线程。我试过做〜线程5a0.b44,但那不起作用。它给了我一个错误“'没有可运行的调试对象错误n''线程5a0.b44'。我需要设置转储来调试一个特定的线程。我该怎么做?
你可以通过~
列出所有主题。它将显示逻辑线程ID和OS线程ID。
您可以使用~<number>s
(s表示选择)和使用~~[<number>]s
的OS线程ID按逻辑编号选择线程。
0:000> ~
. 0 Id: 1ee0.2270 Suspend: 1 Teb: 0000008c`1373b000 Unfrozen
1 Id: 1ee0.2b18 Suspend: 1 Teb: 0000008c`1373d000 Unfrozen
2 Id: 1ee0.1d44 Suspend: 1 Teb: 0000008c`1373f000 Unfrozen
3 Id: 1ee0.1a1c Suspend: 1 Teb: 0000008c`13741000 Unfrozen
0:000> ~1s
ntdll!NtWaitForWorkViaWorkerFactory+0x14:
00007fff`32522fe4 c3 ret
0:001> ~~[1d44]s
ntdll!NtWaitForWorkViaWorkerFactory+0x14:
00007fff`32522fe4 c3 ret
0:002> *** on thread 2 now
您不能将进程ID与线程ID一起使用:
0:002> ~~[1ee0.1a1c]s
Syntax error at '1ee0.1a1c]s'
0:002> ~~[1ee01a1c]s
^ Illegal thread error in '~~[1ee01a1c]s
如果您需要切换过程,请使用|<number>s
或|~[<number>]s
:
0:003> |
. 0 id: 1ee0 examine name: C:\Windows\System32\ApproveChildRequest.exe
# 1 id: 1e9c attach name: C:\Program Files\paint.net\PaintDotNet.exe
0:003> |~[1e9c]s
ntdll!DbgBreakPoint:
00007fff`32523060 cc int 3
1:026> *** on process 1 now