2008-11-20 7 views
18

Lors de la lecture d'une trace de la pile comme:Que signifient les valeurs "+ n" à la fin d'un nom de méthode dans une trace de pile?

[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 

Que signifient les +68, +112, etc. signifient les chiffres. Je suppose qu'ils sont compensés par quelque chose. Si oui, quoi?

Répondre

2

Cela signifie:

c'est un décalage dans les instructions natives pour la méthode.

Lire this pour plus de détails.

15

Je crois qu'ils sont des décalages dans le code de la méthode - s'IL ou octets JIT-assemblage compilé, je ne suis pas sûr ...

(En gros ils prennent la place des numéros de ligne , qui bien sûr ne sont pas disponibles sans les pdbs.)

+1

Ce sont des décalages d'octets entre le début de la fonction et l'adresse de retour. – plinth

+0

Mais en IL ou code machine? –

+0

Je ne sais pas - Je disambiguating qu'ils vont à l'adresse de retour. :) – plinth

2

c'est le décalage d'octet en code natif.

Avec ILDASM vous savez pourquoi.

+3

ILDASM ne vous montrera pas le code natif - voulez-vous dire offset octet dans l'IL? –

Questions connexes