简体   繁体   中英

How to Inspect an Int64 of a Manage application using Windbg

When using windbg to debug a managed process how can I see the value of a Int64? For example I have the following constructor which has as its first parameter a Int64.

ItemQuote quote = new ItemQuote(1234567890987654L, "5mm Super Widgets", 1000, 12999, true, false);

Using the windbg debugger I set a break point at the afore mentioned constructor to inspect its arguments. The disassembly yields the following.

Child SP       IP Call Site
0042f05c 0043025a EncodingInformation.ItemQuote..ctor(Int64, System.String, Int32, Int32, Boolean, Boolean)
    PARAMETERS:
        this (0x0042f060) = 0x01fe3908
        itemNumber (0x0042f07c) = 0x3c97ea86
        itemDescription (0x0042f05c) = 0x01fe2378
        quantity (0x0042f078) = 0x000003e8
        unitPrice (0x0042f074) = 0x000032c7
        discounted (0x0042f070) = 0x00000001
        inStock (0x0042f06c) = 0x00000000

using the .formats command on the itemNumber parameter does not yield what I would expect to see.

0:000> .formats 0x3c97ea86
Evaluate expression:
  Hex:     3c97ea86
  Decimal: 1016588934
  Octal:   07445765206
  Binary:  00111100 10010111 11101010 10000110
  Chars:   <...
  Time:    Tue Mar 19 21:48:54 2002
  Float:   low 0.0185444 high 0
  Double:  5.02262e-315

What should I do to see the actual passed in value of = 1234567890987654L ?

As I understand, you're debugging x86 app and because of it you see lower part of long in !clrstack -a command. As @blabb mentioned , you can use dq to get the value of address: 在此输入图像描述

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM