如何使用 Windbg 检查管理应用程序的 Int64
How to Inspect an Int64 of a Manage application using 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的实际传入值?
据我了解,您正在调试 x86 应用程序,因此您会在 !clrstack -a 命令中看到 long 的下半部分。
正如@blabb 提到的,您可以使用 dq 获取地址的值:
当使用 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的实际传入值?
据我了解,您正在调试 x86 应用程序,因此您会在 !clrstack -a 命令中看到 long 的下半部分。
正如@blabb 提到的,您可以使用 dq 获取地址的值: