2008-11-20 25 views
18

Khi đọc một stack trace như:Giá trị "+ n" có nghĩa là gì ở cuối tên phương thức trong dấu vết ngăn xếp?

[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 

gì làm 68, 112, vv số có ý nghĩa. Tôi đoán rằng họ đang bù đắp cho một cái gì đó. Nếu có thì sao?

Trả lời

2

Nó có nghĩa là:

nó một bù đắp vào các hướng dẫn bản địa cho phương pháp này.

Đọc this để biết thêm chi tiết.

15

Tôi tin rằng họ đang offsets vào mã của phương pháp này - cho dù IL hay JIT biên dịch-lắp ráp byte, tôi không chắc chắn ...

(Về cơ bản họ đang lấy nơi số dòng , tất nhiên là không có sẵn mà không có pdbs.)

+1

Chúng là bù lệch byte từ khi bắt đầu hàm đến địa chỉ trả về. – plinth

+0

Nhưng trong IL hoặc mã máy? –

+0

Không biết - Tôi đã định hướng rằng họ đi đến địa chỉ trả lại. :) – plinth

2

nó là độ lệch byte thành mã gốc.

Với ILDASM bạn biết tại sao.

+3

ILDASM sẽ không hiển thị cho bạn mã gốc mặc dù - bạn có nghĩa là bù đắp byte vào IL? –

Các vấn đề liên quan