我有一个转储文件并用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
依旧......
将6db添加到06468890(第一个指针)是否正确?
答案 0 :(得分:7)
+0x6db
是抛出异常的方法OnActivate
的偏移量。您没有看到行号的原因是因为您没有正确的PDB文件。如果您有PDB文件设置包含这些文件的路径。
如果你没有,你仍然可以很好地指出异常发生的位置。 !u
命令将列出代码的.NET注释版本,从中您应该能够获得源代码中的位置。有关使用!u
命令的更多详细信息,请参阅this answer。