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

在 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 显示帧编号。帧总是连续编号的,从零开始。

  • Headings 显示列头
  • Arg types 显示有关堆栈中的函数预期和接收的参数的详细信息。

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

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

其他说明

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

Windbg Call Stack(调用堆栈)窗口的使用的更多相关文章

  1. vs2010 调试 调用堆栈 窗口

    msdn 如何使用call stack窗口: http://msdn.microsoft.com/zh-cn/library/a3694ts5(v=vs.90).aspx 使用“调用堆栈”窗口可以查看 ...

  2. 在 Visual Studio 中调试时映射调用堆栈上的方法

    本文转自:https://msdn.microsoft.com/zh-cn/library/dn194476.aspx 1.创建代码图,以便在调试时对调用堆栈进行可视化跟踪. 你可以在图中进行标注以跟 ...

  3. JavaScript是如何工作的:引擎,运行时和调用堆栈的概述!

    摘要: 理解JS执行原理. 原文:JavaScript是如何工作的:引擎,运行时和调用堆栈的概述! 作者:前端小智 Fundebug经授权转载,版权归原作者所有. 本文是旨在深入研究JavaScrip ...

  4. VC调试篇:ASSERT(FALSE)时怎么办?查看调用堆栈

    问题简述 我们在调试程序时,经常会遇到程序中断的情况,就像下图这样. 我艹,这该怎么办,我们一下子就懵逼了.我们选择中断,常常会跳到一个莫名其妙的地方去. 正是这个断言 ASSERT(::IsWind ...

  5. JavaScript是如何工作的01:引擎,运行时和调用堆栈的概述!

    概述 几乎每个人都已经听说过 V8 引擎,大多数人都知道 JavaScript 是单线程的,或者它使用的是回调队列. 在本文中,我们将详细介绍这些概念,并解释 JavaScrip 实际如何运行.通过了 ...

  6. Windbg查看调用堆栈(k*)

            无论是分析程序崩溃原因,还是解决程序hang问题,我们最常查看的就是程序调用堆栈.学会windbg调用堆栈命令,以及理解堆栈中的各个参数的意义就显得至关重要. 上图就是一个典型的Win ...

  7. [转]如何利用ndk-stack工具查看so库的调用堆栈【代码示例】?

    如何利用ndk-stack工具查看so库的调用堆栈[代码示例]? http://hi.baidu.com/subo4110/item/d00395b3bf63e4432bebe36d Step1:An ...

  8. 怎样重建一个损坏的调用堆栈(callstack)

    原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupt ...

  9. 如何重建一个损坏的调用堆栈(callstack)

    原文作者:Aaron Ballman原文时间:2011年07月04日原文地址:http://blog.aaronballman.com/2011/07/reconstructing-a-corrupt ...

随机推荐

  1. rdd 基本操作

    package com.jason.example import org.apache.spark.rdd.RDD class RddTest extends SparkInstance { val ...

  2. 单点登录(sso)入门

    单点登录的英文名叫做Single Sign On,简称SSO. 在以前,一般我们就单系统,所有的功能都在同一个系统上. 后来,我们为了合理利用资源和降低耦合性,于是把单系统拆分成多个子系统. 比如阿里 ...

  3. 如何防止短信API接口遍历

    短信API接口在web中得到越来越多的应用,如用户注册,登录,密码重置等业务模块都会使用手机验证码进行身份验证.一般情况下,我们会采用这样的安全策略,将短信发送频率限制在正常的业务流控范围内,比如,一 ...

  4. 【题解】邻值查找 [CH1301]

    [题解]邻值查找 [CH1301] 传送门:邻值查找 \([CH1301]\) \([AcWing136]\) [题目描述] 给定一个长度为 \(n\) 的序列 \(A\),\(A\) 中的数各不相同 ...

  5. KVM学习

    获取镜像目前大小 # qemu-img info debian.img 添加额外的10G空间到镜像中 # qemu-img resize -f raw debian.img +10GB 注意:并不是所 ...

  6. 【spring boot】加载同名Bean解决方法

    原文地址:https://blog.csdn.net/liuyueyi25/article/details/83280239 @SpringBootApplication @ComponentScan ...

  7. Linq与委托

    using System; using System.Linq; using System.Reflection; using Stuglxt_Models; namespace ConsoleApp ...

  8. 程序游戏推荐(C语言贪吃蛇,python天天酷跑(需要安装pygame),js是狠人就坚持30s)

    下面是下载位置,我把他们上传到我的文件下了. C语言贪吃蛇:https://files.cnblogs.com/files/ITXiaoAng/%E8%B4%AA%E5%90%83%E8%9B%87. ...

  9. 2019 苏州朗动java面试笔试题 (含面试题解析)

      本人5年开发经验.18年年底开始跑路找工作,在互联网寒冬下成功拿到阿里巴巴.今日头条.苏州朗动等公司offer,岗位是Java后端开发,因为发展原因最终选择去了苏州朗动,入职一年时间了,也成为了面 ...

  10. Java自学-I/O Stream流

    Java的流 Stream 什么是流(Stream),流就是一系列的数据 步骤 1 : 什么是流 当不同的介质之间有数据交互的时候,JAVA就使用流来实现. 数据源可以是文件,还可以是数据库,网络甚至 ...