WinDbg:第一次机会异常输出的括号中的类地址是什么?

WinDbg: what is the address-like in parantheses on first chance exceptions output?

WinDbg 预览版在开始调试可执行文件后立即中断:

(3bf4.2318): Break instruction exception - code 80000003 (first chance)
ntdll!LdrpDoDebuggerBreak+0x30:
00007ffe`d84e06b0 cc              int     3

我会继续:

0:000> g

它将为 .NET 和 OS 文件输出一系列 ModLoad: 行,然后关于第一次机会异常的类似输出:

(3bf4.2318): Unknown exception - code 04242420 (first chance)

在前面的输出中,我了解到代码表示异常类型。但是什么代表3bf4.2318呢?为什么该值与与中断指令异常相关的第一个输出中的值相同,即使现在它表示未知异常?

这是发生异常的进程ID和线程ID。我不知道在 WinDbg 文档的深处是否描述了该输出。但是您可以在初始断点

上轻松验证
(5130.710): Break instruction exception - code 80000003 (first chance)

并将其与 process status (MSDN) (|)

进行比较
0:000> |
.  0    id: 5130    create  name: Test.exe

thread status (MSDN) (~) 具有相同的格式但没有括号:

0:000> ~
.  0  Id: 5130.710 Suspend: 1 Teb: 00c7c000 Unfrozen

进程和线程信息很有用,因为

a) WinDbg 能够同时调试许多进程(例如 .childdbg.attach)和

b) 你可以在~~[<Thread ID>]s命令中使用它来切换到线程

0:007> ~~[710]s
[...]
0:000>