代码之家  ›  专栏  ›  技术社区  ›  Ferruccio

在崩溃转储中查看寄存器

  •  1
  • Ferruccio  · 技术社区  · 17 年前

    当异常发生时,“寄存器”窗口似乎包含寄存器,但如果能够在每个堆栈帧中看到它们的内容,则会很有用。

    4 回复  |  直到 17 年前
        1
  •  2
  •   Adam Rosenfield    17 年前

    根据调用约定,您可以获得一些保存在堆栈上的寄存器。例如,在 cdecl calling convention ,调用者或被调用者需要保存除EAX、ECX和EDX之外的所有寄存器。这三个寄存器是可关闭的,因此您通常无法从调用堆栈的更高层获取它们的值。如果函数不使用必须保存的寄存器,则不会保存它,但由于它不使用它,该寄存器在下一个更高的堆栈帧中具有相同的值。

        2
  •  1
  •   Ferruccio    17 年前

        3
  •  0
  •   Dan T Dan T    16 年前

    在优化的构建中,确实有些信息可能会被抛出堆栈,但是,您可以要求调试器尝试显示给定堆栈帧的信息。“先做” kn 要查看具有帧编号的堆栈,请重试 .frame /c [frame] “或” .frame /r [frame] ".

    查看帮助(“ .hh )以获取更多信息。

        4
  •  -1
  •   Emmanuel Caradec    17 年前

    我认为调试时您也无法获得它。可以从寄存器中获得的唯一值是它们在当前指令中的值。