Visual Studio中调用堆栈窗口的用途是什么?

eom*_*off 6 debugging visual-studio

Visual Studio中调用堆栈窗口的用途是什么?

Abe*_*bel 7

当代码中断时(即,抛出异常时),堆栈跟踪窗口将显示在引发异常的方法之前调用的所有方法,包括每个方法的参数和这些参数的状态.这使调试变得更容易,尤其是在更复杂的调用图中(也就是说,当您无法通过查看调用其他方法/属性/函数的代码来确定时).

试试吧,在你的代码中放置一个断点(F9),运行代码,等待断点被击中,然后打开堆栈窗口.您将看到所有呼叫到当前行.您可以双击堆栈跟踪窗口中的每个条目,光标将向右跳转.

如果您想知道:灰色线是方法调用,其中没有加载源代码或符号.您可以右键单击这些行,然后选择加载符号以加载符号.


小智 5

每次调用方法时,都会在该线程的“堆栈”上放置一个条目,描述该方法以及用于调用该方法的参数。当该方法返回时,该方法及其参数将从堆栈中删除。这就是操作环境如何知道方法完成时返回何处。它只是从堆栈中删除顶部条目,清除在该堆栈帧期间创建的所有局部变量,然后返回到上一个方法。(这过于简单化了,但总体来说是这样的想法。)

您可以从字面上将其视为将您带到这里的指令的“堆栈”。

这就是它对操作环境的意义。

对于开发人员来说,实际目的是帮助您了解程序为何处于当前状态。每当程序的执行在调试器中停止时,无论是通过断点还是抛出异常(取决于您的 Visual Studio 设置) ,您将可以访问当前堆栈。请记住,此堆栈并未显示到目前为止已调用的所有方法。任何完成的方法都会从堆栈中删除。这不是日志。

您可以双击堆栈中的任何条目以转到该源代码(如果您的计算机上可用)。当你在那里时,你可以检查局部变量等。它是一种侦探工具,可以帮助你弄清楚到目前为止程序中发生了什么。