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

在 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. Word文字中嵌套的图片向上突出,与文字的高度不一致

    文字中嵌套的图片向上突出,与文字的高度不一致. 调整方法: 选中图片,找到Font字体设置,选中位置下拉框,选择适当项. Select the inline graphic by clicking o ...

  2. Laravel框架中Echo的使用过程

    今天的这篇文章中给大家分享关于laravel框架中echo的使用,文章的内容是一步一步来的,用了16步走完一个过程,过程很清晰,希望可以帮助到有需要的朋友吧.话不多说,直接看内容.官方文档推荐使用 P ...

  3. Java代码质量检查checkstyle, pmd, cpd, p3c,findbugs, jacoco, sonarquebe以及和Jenkins集成

    概述 又搞一边质量扫描插件,之前做过一遍,然后后面各种忽略,然后就放弃了,所以,应该寻找一种方法,循序渐进的实施.本次将实施一个基本的打包扫描方案,包含 checkstyle 固定团队编码风格,固定命 ...

  4. 【BZOJ4016】[FJOI2014]最短路径树问题(点分治,最短路)

    [BZOJ4016][FJOI2014]最短路径树问题(点分治,最短路) 题面 BZOJ 洛谷 题解 首先把最短路径树给构建出来,然后直接点分治就行了. 这个东西似乎也可以长链剖分,然而没有必要. # ...

  5. Redis(五)事务

    Redis(五)事务 引用wiki中关于事务处理的定义: Transaction processing is information processing in computer science th ...

  6. Flink基本的API(续)

    上一篇介绍了编写 Flink 程序的基本步骤,以及一些常见 API,如:map.filter.keyBy 等,重点介绍了 keyBy 方法.本篇将继续介绍 Flink 中常用的 API,主要内容为 指 ...

  7. Oracle的创建表空间及用户

    学习笔记: 1.创建表空间 --创建表空间 create tablespace thepathofgrace datafile 'c:\thepathofgrace.dbf' size 100m au ...

  8. C# winform窗体简单保存界面控件参数到xml

    引用网上的 XMLHelper 地址 :https://www.cnblogs.com/chnboy/archive/2009/04/02/1427652.html 稍做修改 using System ...

  9. SpringApplication到底run了什么(下)

    在上篇文章中SpringApplication到底run了什么(上)中,我们分析了下面这个run方法的前半部分,本篇文章继续开工 public ConfigurableApplicationConte ...

  10. 自动居中标题和内容;aspxgridview允许定义两个关键字为主键的格式

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...