【发布时间】:2012-10-11 00:18:58
【问题描述】:
我有一个转储文件并用 WinDbg 加载它。
我使用 !pe(打印异常)来查看异常(空引用异常)。但是,它为我指出了一个包含约 100 行的方法。
是否可以找出抛出异常的那一行?
0:000> !pe
Exception object: 00000000822e7e28
Exception type: System.NullReferenceException
Message: Object reference not set to an instance of an object.
InnerException: <none>
StackTrace (generated):
SP IP Function
00000000001FBDC0 000007FF06468F6B Utils.Page.OnActivate()+0x6db
+0x6db 是什么意思?
非常感谢, 丹
编辑:
我有源文件,但我无法重现此问题。这就是为什么我想找出确切的行
EDIT2:(在 Brian 建议使用 !u 命令之后)
这是使用 !u 命令后的快照
0:000> !u 000007ff03af9a38
Normal JIT generated code
Page.OnActivate()
Begin 000007ff06468890, size 84b
000007ff`06468890 53 push rbx
000007ff`06468891 55 push rbp
000007ff`06468892 56 push rsi
000007ff`06468893 57 push rdi
000007ff`06468894 4883ec78 sub rsp,78h
000007ff`06468898 488d6c2430 lea rbp,[rsp+30h]
000007ff`0646889d 488bf2 mov rsi,rdx
等等……
06468890(第一个指针)加6db对吗?
【问题讨论】:
-
+0x6db是偏移量。您需要 PDB 和从中创建 PDB 和程序集的确切源代码。然后你应该能够得到行号。 -
@vcsjones 我有源代码和 pdb。如何计算行号?
-
布赖恩的回答包括这一点。您需要
.reload将 PDB 与程序集放在同一目录中,或者使用.sympath告诉 WinDbg 在哪里寻找 PDB,然后.reload