调用堆栈是指向程序计数器当前位置的函数调用链。调用堆栈的顶部函数是当前函数,下一个函数是调用当前函数的函数,依此类推。显示的调用堆栈基于当前程序计数器,除非更改寄存器上下文。

在 WinDbg 中,可以通过输入命令或通过使用Call Stack窗口中查看调用堆栈。

Call Stack窗口的打开方式

  • 通过快捷键Alt+6打开
  • 通过工具栏按钮打开
    Windbg Call Stack(调用堆栈)窗口的使用

Call Stack窗口

作为一种替代方法 k命令时,您可以调用窗口中查看调用堆栈。通过上面的方式打开call stack窗口

 Windbg Call Stack(调用堆栈)窗口的使用

  • Raw args 显示传递给函数的前三个参数。在基于x86的处理器上,此显示包括传递给函数的前三个参数(“Args to Child”)。
    Windbg Call Stack(调用堆栈)窗口的使用

  • Func info 显示帧指针省略(FPO)数据和其他有关函数的内部信息。此命令仅在基于x86的处理器上可用。
    Windbg Call Stack(调用堆栈)窗口的使用

  • Source 在函数名之后显示源模块名和行号(如果调试器具有此信息)。

  • Addrs 显示各种与帧相关的地址。在基于x86的处理器上,此显示包括堆栈帧的基指针(“ChildEBP”)和返回地址(“RetAddr”)。
    Windbg Call Stack(调用堆栈)窗口的使用

  • Nonvolatile regs 显示寄存器上下文的非易失性部分。此命令仅在基于安腾的处理器上可用。

  • Frame nums 显示帧编号。帧总是连续编号的,从零开始。
    Windbg Call Stack(调用堆栈)窗口的使用

  •  

    Headings 显示列头
    Windbg Call Stack(调用堆栈)窗口的使用
  • Arg types 显示有关堆栈中的函数预期和接收的参数的详细信息。

  • Always floating 将使窗口停靠,即使仍拖到停靠位置。

  • Move with frame WinDbg帧移动时使窗口在移动,即使窗口已解除锁定。

其他说明

Call Stack窗口里显示的堆栈内容会发生改变。

相关文章: