在读取堆栈跟踪时,如:
[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等数字是什么意思?我猜它们是对某些东西的补偿。如果是这样,是什么?
发布于 2008-11-20 13:14:46
我相信它们是方法代码中的偏移量-无论是IL还是JIT编译的汇编字节,我不确定...
(基本上,它们取代了行号,没有pdbs行号当然是不可用的。)
发布于 2008-11-20 13:19:51
它是本机代码中的字节偏移量。
使用ILDASM,您就知道原因了。
发布于 2020-01-02 13:58:59
简单地说,Stack Trace是流中函数/方法的反向时间顺序列表,直到当前代码。也就是说,直到命中断点或发生异常为止。
堆栈跟踪列表的顶部是当前方法及其详细信息,如Class、Assembly、filename等。
在接下来的几行中,列出调用前一个方法(上面一行中的一个)的方法。沿着列表往下看,这将继续显示调用堆栈,一直到程序的开头。
Stack Trace的所有这些细节都是有益的,因为它列出了方法调用的来源和中间方法/函数,直到它到达当前代码行。这非常有用,因为如果有多种方法可以访问当前方法,Stack Track会列出所遵循的确切流程。
https://stackoverflow.com/questions/305244
复制相似问题