在.NET程序集中查找字节偏移量

Gre*_*g B 8 .net

我正在尝试调试客户端向我们报告的错误.堆栈跟踪只有字节偏移,而不是行号.

例如

[NullReferenceException:对象引用未设置为对象的实例.]
Foo.Bar(FooFoo p)+32 Foo.BarBar()+
191
Foo.BarBarBar()+15

如何将这些字节偏移反向工程为代码/方法调用等?

如何找到抛出NullReferenceException的位置?

And*_*rey 5

这是一个可能有效(或可能不是:)的解决方案.问题是偏移和行号之间的映射包含在pdb(又称调试符号)中

  1. 采用与用于将二进制文件发送到客户端的完全(重要)相同的构建配置.然后转到项目属性,选项卡"构建",单击页面底部的"高级"按钮.然后找到"Debug Info"并选择"pdb-only"
  2. 构建项目并转到输出文件夹.
  3. 选择ildasm,将其添加到PATH或复制到某处.
  4. 在你的构建文件夹中ildasm /LINENUM /SOURCE YourFile.exe.它将输出具有偏移和源线映射的IL.

我看到的唯一问题是你无法生成完全相同的二进制文件和映射可能会发生变化.