如何使用Windbg检查管理应用程序的Int64

时间:2016-08-04 04:13:56

标签: c# windows debugging windbg

使用windbg调试托管进程时,如何查看Int64的值?例如,我有以下构造函数,其第一个参数是Int64。

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

使用windbg调试器我在前面提到的构造函数中设置了一个断点来检查它的参数。反汇编产生以下结果。

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

在itemNumber参数上使用.formats命令不会产生我期望看到的内容。

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

如何查看实际传入的值= 1234567890987654L?

1 个答案:

答案 0 :(得分:4)

据我所知,你正在调试x86应用程序,因此你会看到long in!clrstack -a命令的下半部分。 正如@blabb所提到的,你可以使用dq来获取地址的值: enter image description here