http://msdn.microsoft.com/zh-cn/library/a3694ts5(v=vs.90).aspx

使用 “调用堆栈” 窗口可以查看当前堆栈上的函数或过程调用。

“调用堆栈” 窗口显示每个函数的名称和编写它所用的编程语言。函数或过程名可能伴随有可选信息,如模块名、行号、字节偏移量以及参数的名称、类型和值。 可以打开或关闭这些可选信息的显示。

一个黄色箭头标识执行指针当前所位于的堆栈帧。 默认情况下,该帧的信息显示在源、 “反汇编” “局部变量” “监视” “自动” 窗口中。 如果想将上下文更改为堆栈上的另一个帧,可以在 “调用堆栈” 窗口中执行相应的操作。

当调试符号对部分调用堆栈不可用时, “调用堆栈” 窗口也许就不能显示那部分堆栈的正确信息。 将出现以下表示法:

[下面的帧可能不正确和/或缺失,没有为 name.dll 加载符号]

在托管代码中,“调用堆栈”窗口默认情况下隐藏非用户代码的信息。 在隐藏信息处出现以下表示法:

[<External Code>]

非用户代码是指除“我的代码”以外的任何代码。 有关“我的代码”的更多信息,请参见 如何:单步执行“仅我的代码” 。 使用快捷菜单可以选择显示非用户代码的调用堆栈信息。

默认情况下, “调用堆栈” 窗口不显示与其他线程之间的相互调用。 可以使用快捷菜单选择查看那些调用。

显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。 若要更改设置,请在 “工具” 菜单上选择 “导入和导出设置” 。 有关更多信息,请参见 Visual Studio 设置

选择 “切换到帧”

一个带有卷尾的绿色箭头显示在所选帧旁。 执行指针保留在原始帧中,仍然用黄色箭头标记。 如果从 “调试” 菜单中选择 “单步执行” “继续” ,执行将继续在原始帧中进行,而不是在选定的帧中进行。

显示与其他线程之间的来回调用

右击 “调用堆栈” 窗口,然后选择 “包括对其他线程和来自其他线程的调用”

查看调用堆栈上的函数的源代码

“调用堆栈” 窗口中,右击要查看其源代码的函数,然后选择 “转到源代码”

查看调用堆栈上的函数的反汇编代码

“调用堆栈” 窗口中,右击要查看其反汇编代码的函数,然后选择 “转到反汇编”

从“调用堆栈”窗口运行到特定函数

请参见 运行到指定函数

在函数调用的退出点上设置断点

请参见 如何:从“调用堆栈”窗口针对函数调用设置断点

加载模块符号

如果要重新加载模块的符号,请在 “调用堆栈” 窗口中右击显示该模块的帧,然后选择 “加载符号”

“调用堆栈” 窗口中,可以为当前还未加载符号的代码加载调试符号。 这些符号可以是从 Microsoft 公共符号服务器下载的 .NET Framework 符号或系统符号,也可以是正在调试的计算机上的某个符号路径中的符号。

有关更多信息,请参见 如何:使用符号服务器 如何:指定符号路径

“调用堆栈” 窗口中,右击还未加载符号的帧。 此帧将显示为灰色。

指向 “加载符号” ,然后单击 “Microsoft 符号服务器” “符号路径”

设置符号路径

“模块” 窗口中右击任一模块。

单击 “符号设置”

将打开 “选项” 对话框并显示 “符号” 页。

“选项” 对话框中单击“文件夹”图标。

“符号文件(.pdb)位置” 框中将出现一个光标。

键入所调试的计算机上的符号位置的目录路径名。 对于本地调试,此计算机指您的本地计算机。 对于远程调试,此计算机指远程计算机。

单击 “确定” 关闭 “选项” 对话框。