Visual Studio中调用堆栈窗口的用途是什么?
答案 0 :(得分:7)
当代码中断时(即抛出异常时),堆栈跟踪窗口将显示在引发异常的方法之前调用的所有方法,包括每个方法的参数和这些参数的状态。这使调试变得更容易,尤其是在更复杂的调用图中(也就是说,当您无法通过查看调用其他方法/属性/函数的代码来确定时)。
试试吧,在代码中的某处放置断点(F9),运行代码,等待断点被击中,然后打开堆栈窗口。您将看到所有呼叫到当前行。您可以双击堆栈跟踪窗口中的每个条目,光标将向右跳转。
如果您想知道:灰线是方法调用,其中没有加载源代码或符号。您可以右键单击这些行,然后选择加载符号以加载符号。
答案 1 :(得分:3)
每次调用方法时,都会在该堆栈的“堆栈”上放置一个条目,用于描述方法和用于调用方法的参数。当方法返回时,方法及其参数将从堆栈中删除。这就是操作环境知道方法完成时返回的位置。它只是从堆栈中删除顶部条目,清除在该堆栈帧期间创建的任何局部变量,并返回到前一个方法。 (这已经过度简化,但通常是这个想法。)
你可以把它想象成一个“堆叠”的指令,让你在这里。
这就是对操作环境的意义。
对于开发人员来说,实际目的是帮助您理解程序处于其所处状态的原因。每当程序的执行在调试器中停止时,可以通过断点或抛出异常(取决于您的Visual Studio设置),您将可以访问当前堆栈。请记住,此堆栈不会显示到目前为止已调用的所有方法。完成的任何方法都从堆栈中删除。这不是日志。
您可以双击堆栈中的任何条目以转到该源代码(如果它在您的计算机上可用)。当你在那里时,你可以检查局部变量等。它是一种侦探工具,可以帮助你弄清楚你的程序到目前为止发生了什么。
答案 2 :(得分:1)
调用堆栈的目的是让您准确查看导致问题发生的调用。
当您查看异常中的堆栈跟踪时,您可以看到导致错误发生的原始调用。
在Visual Studio中进行调试时,您可以在调用堆栈中上下导航,以查看应用程序在不同级别存储的值。它可用于调试应用程序如何进入其所处的状态。
答案 3 :(得分:1)
调用堆栈窗口的目的是为您提供访问当前指令的完整代码路径的访问权限。您可以使用它来导航到程序中的先前函数调用,检查局部变量,参数等......这是一个非常有用的工具,用于确定代码执行操作的原因。