我正在尝试调试客户端向我们报告的错误。堆栈跟踪只有字节偏移,而不是行号。
e.g。
[NullReferenceException:对象引用未设置为对象的实例。]
Foo.Bar(FooFoo p)+32
Foo.BarBar()+191
Foo.BarBarBar()+ 15
如何将这些字节偏移反向设计为代码/方法调用等?
如何找到抛出NullReferenceException的位置?
答案 0 :(得分:5)
这是一个可能有效(或可能不是:)的解决方案。问题是偏移和行号之间的映射包含在pdb(又称调试符号)
中ildasm
,将其添加到PATH
或将其复制到某处。ildasm /LINENUM /SOURCE YourFile.exe
。它将输出带有偏移和源线映射的IL。我看到的唯一问题是您无法生成完全相同的二进制文件和映射可能会发生变化。
答案 1 :(得分:3)
我唯一能记住的工具就是.NET Reflector。打开与客户端在其中完全相同的二进制文件,并将“选项”对话框中的语言更改为IL,并且它应显示(AFAIK)与每行上的标签相同的字节偏移量。
你必须阅读IL而不是C#或其他任何东西,但它总比没有好。
答案 2 :(得分:3)
编辑:Andreys解决方案可能更好:)