Windbg Call Stack窗口的使用

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

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

Call Stack窗口的打开方式

  • 通过菜单View--->Call Stack打开
  • 通过快捷键Alt+6打开
  • 通过工具栏按钮打开

Call Stack窗口

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

call stack窗口中的按钮可用于自定义调用堆栈的视图。要移动到源窗口或反汇编窗口中相应的调用位置,请双击调用堆栈中的一行,或选择一行并按回车键。此操作还将本地上下文更改为选定的堆栈帧。

调用窗口具有一个包含多个按钮和具有带其他命令的快捷菜单的工具栏。 若要访问此菜单中,右键单击标题栏或单击窗口 (在右上角附近的图标)。 工具栏和菜单包含以下按钮和命令:

  • Raw args 显示传递给函数的前三个参数。在基于x86的处理器上,此显示包括传递给函数的前三个参数(“Args to Child”)。
  • Func info 显示帧指针省略(FPO)数据和其他有关函数的内部信息。此命令仅在基于x86的处理器上可用。
  • Source 在函数名之后显示源模块名和行号(如果调试器具有此信息)。
  • Addrs 显示各种与帧相关的地址。在基于x86的处理器上,此显示包括堆栈帧的基指针(“ChildEBP”)和返回地址(“RetAddr”)。
  • Nonvolatile regs 显示寄存器上下文的非易失性部分。此命令仅在基于安腾的处理器上可用。
  • Frame nums 显示帧编号。帧总是连续编号的,从零开始。
  • Arg types 显示有关堆栈中的函数预期和接收的参数的详细信息。
  • Always floating 将使窗口停靠,即使仍拖到停靠位置。
  • Move with frame WinDbg帧移动时使窗口在移动,即使窗口已解除锁定。

其他说明

在用户模式下,堆栈跟踪基于当前线程的堆栈。在内核模式下,堆栈跟踪基于当前寄存器上下文。 可以设置寄存器上下文以匹配特定线程、 上下文记录或捕获帧。 如果Call Stack窗口打开时,使用~1s切换线程、.cxr切换上下文等指令事,Call Stack窗口里显示的堆栈内容会发生改变。

原文地址:https://www.cnblogs.com/yilang/p/12073798.html

时间: 2024-11-02 09:04:12

Windbg Call Stack窗口的使用的相关文章

Windbg Memory(内存)窗口的使用

在 WinDbg 中,可以查看和编辑内存,通过输入命令或通过使用内存窗口. 内存窗口的打开 通过菜单View-->Memory 通过快捷键Alt+5 通过工具栏 使用内存窗口 通过上面方式打开的窗口如下: 内存窗口显示多个列中的数据. 在窗口的左侧列显示每个行的开始地址. 其余列显示所需的信息,从左到右. 如果选择字节中显示格式菜单中,对应于这两个字节的 ASCII 字符将显示在窗口的右侧. 请注意  默认情况下,内存窗口显示虚拟内存. 这种类型是内存的内存的在用户模式下可用的唯一类型. 在内核

WinDbg命令窗口的使用

调试器命令窗口是windbg中的主要调试信息窗口.可以在此窗口中输入调试程序命令并查看命令输出.Windbg的命令窗口是我们进行调试时,主要打交道的窗口.界面如下 对于windbg,“调试器命令窗口”是指标题栏中标记为“命令”的窗口.此窗口包含两个窗格: 在底部的小窗格中,输入命令.  在上面的大窗格中,可以查看命令输出. 打开和关闭命令窗口 通常我们通过打开exe程序.附加到进程或打开dmp文件进行调试时,会自动打开此窗口,但很有可能我们关闭掉了这个窗口,有如下重新打开方式: 点击工具栏按钮

使用WinDbg内核调试[转]

Technorati 标签: windbg,内核调试 WINDOWS调试工具很强大,但是学习使用它们并不容易.特别对于驱动开发者使用的WinDbg和KD这两个内核调试器(CDB和NTSD是用户态调试器). 本教程的目标是给予一个已经有其他调试工具使用经验的开发者足够信息,使其能通过参考WINDOWS调试工具的帮助文件进行内核调试. 本文将假定开发者熟悉一般WINDOWS操作系统和进程的建立过程. 本文的重点是集成内核模式和用户态模式的图形化调试器WinDbg.KD在脚本和自动化调试中更有用,并且

调试Bug的神兵利器:通过WinDbg条件断点收集Log [转载]

转载链接:http://blog.csdn.net/atfield/article/details/4037248 前段时间花了几天一直在用WinDbg调试一个比较棘手的Bug.这个Bug是C# Team那边发现的,他们的Testcase跑大概10分钟左右会出一个在CLR内部的ASSERT.比较难调试的主要原因在于ASSERT表明一个全局的数据结构出现了问题,本来不应该用完的数组却已经用完了(因为按照设计,这个数组是边使用边清理的,是不会用完的).初步想到的有下面几种方案来调试: 1. 设置数据

<一> windbg简介

摘抄自博客http://www.pediy.com/kssd/pediy10/94457.html 1.下载 安装 WinDbg是微软发布的一款免费而十分强大的调试工具. WinDbg包含在WDK里,也可以独立的下载.官方的下载地址:http://www.microsoft.com/whdc/devtoo...g/default.mspx 2.窗口简介 WinDbg有好几个窗口,功能跟OllyDbg的差不多.窗口的名称与用途如下: 3. 符号.源码路径设置 WinDbg是一款很强大的源码调试工具

自定义VS程序异常处理及调试Dump文件(一)

1. Dump文件 1. Dump文件介绍 Dump文件(Dump File),也叫转储文件,以.DMP为文件后缀.dump文件是进程在内存中的镜像文件,通过转换然后存储成以.DMP后缀的文件.dump文件根据存储时的选项不同,会生成不同大小的文件,其中记录信息也自然有所不同. 2. Dump文件分类 程序分两种,内核模式程序和用户模式程序,也即Ring0程序和Ring3程序.Dump文件是伴随着程序而生成的,所以Dump文件也同样分两种. 1. Kernel-Mode Dump Files(内

VC++常见的BUG防范及解决办法

C++语言是桌面系统,尤其是系统软件.大型应用软件的主流开发语言.C++语言以其灵活性著称,同时也更复杂.利用C++编写健壮的代码,更具有挑战性.C++允许动态内存管理,同时也容易导致更多和内存相关的问题. 为能够有效地避免开发中潜在的危险代码,应遵循C++相关的编码规范和惯用法: 1,基类或者带有虚函数的类应该将其析构函数声明为虚函数. 2,在构造函数中防止内存泄漏,在析构函数中不要抛出异常. 3,使用对应形式的new和delete.即:用delete来释放new申请的内存,delete[ ]

分析函数调用关系图(call graph)的几种方法

分析函数调用关系图(call graph)的几种方法 绘制函数调用关系图对理解大型程序大有帮助.我想大家都有过一边读源码(并在头脑中维护一个调用栈),一边在纸上画函数调用关系,然后整理成图的经历.如果运气好一点,借助调试器的单步跟踪功能和call stack窗口,能节约一些脑力.不过如果要分析的是脚本语言的代码,那多半只好老老实实用第一种方法了.如果在读代码之前,手边就有一份调用图,岂不妙哉?下面举出我知道的几种免费的分析C/C++函数调用关系的工具. 函数调用关系图(call graph)是图

DELPHI快捷键

分类 快捷键 解释 备注 组件设计类 Escape 选择当前组件容器   Shift + Click 选择多个组件:选择窗体   Tab 选择下一个组件   Shift + Tab 选择上一个组件   方向键 选择此方向的下一个组件   Ctrl + 方向键 将所选组件的位置移动 1 个像素   Shift + 方向键 将所选组件的大小改变 1 个像素   Ctrl + Shift + 方向键 将所选组件的位置移动 1 个栅格   Del 删除所选组件   Ctrl + 鼠标拖动 选择一个容器内