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

标签 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的实际传入值?

最佳答案

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

关于c# - 如何使用 Windbg 检查管理应用程序的 Int64,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38758385/

相关文章:

c# - 使用条件表达式对 DynamoDB 的并发更新有时同时通过

c - 这是一个 C 程序,用于查找具有相同数字的下一个最大数字。但是没有通过一个测试用例

PHP - 识别函数何时被调用

c++ - 在C++中使用nan初始化内存以进行调试

c# - 谁负责检查空引用异常?

c# - 如何引入只在 Debug模式下执行的语句和代码行?

c# - 嵌入单声道时如何从对象获取数组字段

python - 使子进程在 Windows 上找到 git 可执行文件

Java - 从同一个方法/类打开程序、网站或文件夹

python - Pip install functools 返回错误