堆栈跟踪中方法名称末尾的“+ n”值是什么意思?

时间:2008-11-20 13:10:39

标签: c# .net

读取堆栈跟踪时:

[FormatException: Input string was not in a correct format.]
   System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number, NumberFormatInfo info, Boolean parseDecimal) +2755599
   System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) +112
   System.Convert.ToInt32(String value) +68

+68,+ 112等数字是什么意思。我猜他们已经抵消了什么。如果是这样,是什么?

4 个答案:

答案 0 :(得分:15)

我相信他们偏离了方法的代码 - 无论是IL还是JIT编译汇编字节,我都不确定......

(基本上他们取代了行号,当然没有pdbs就无法使用。)

答案 1 :(得分:2)

它是本机代码的字节偏移量。

使用ILDASM,你知道原因。

答案 2 :(得分:2)

这意味着:

  

它是该方法的本机指令的偏移量。

阅读this了解更多详情。

答案 3 :(得分:0)

简而言之,堆栈跟踪是流中功能/方法的反向时间顺序列表,直到当前代码为止。也就是说,直到达到断点或发生异常为止。

在堆栈跟踪列表的顶部,是当前方法及其详细信息,例如类,程序集,文件名等。

在下面的行中,列出调用前一个方法(上一行中的一个)的方法。在列表下方,它将继续显示调用堆栈,一直返回到程序的开始。

Stack Trace的所有这些详细信息是有益的,因为它列出了方法调用的起源以及中间方法/函数,直到到达当前代码行为止。这非常有帮助,因为如果有多种方法可以访问当前方法,则Stack Track会列出遵循的确切流程。