http://msdn.microsoft.com/zh-cn/library/a3694ts5(v=vs.90).aspx
使用
“调用堆栈”
窗口可以查看当前堆栈上的函数或过程调用。
“调用堆栈”
窗口显示每个函数的名称和编写它所用的编程语言。函数或过程名可能伴随有可选信息,如模块名、行号、字节偏移量以及参数的名称、类型和值。 可以打开或关闭这些可选信息的显示。
一个黄色箭头标识执行指针当前所位于的堆栈帧。 默认情况下,该帧的信息显示在源、
“反汇编”
、
“局部变量”
、
“监视”
和
“自动”
窗口中。 如果想将上下文更改为堆栈上的另一个帧,可以在
“调用堆栈”
窗口中执行相应的操作。
当调试符号对部分调用堆栈不可用时,
“调用堆栈”
窗口也许就不能显示那部分堆栈的正确信息。 将出现以下表示法:
[下面的帧可能不正确和/或缺失,没有为 name.dll 加载符号]
在托管代码中,“调用堆栈”窗口默认情况下隐藏非用户代码的信息。 在隐藏信息处出现以下表示法:
[<External Code>]
非用户代码是指除“我的代码”以外的任何代码。 有关“我的代码”的更多信息,请参见
如何:单步执行“仅我的代码”
。 使用快捷菜单可以选择显示非用户代码的调用堆栈信息。
默认情况下,
“调用堆栈”
窗口不显示与其他线程之间的相互调用。 可以使用快捷菜单选择查看那些调用。
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您的当前设置或版本。 若要更改设置,请在
“工具”
菜单上选择
“导入和导出设置”
。 有关更多信息,请参见
Visual Studio 设置
。
选择
“切换到帧”
。
一个带有卷尾的绿色箭头显示在所选帧旁。 执行指针保留在原始帧中,仍然用黄色箭头标记。 如果从
“调试”
菜单中选择
“单步执行”
或
“继续”
,执行将继续在原始帧中进行,而不是在选定的帧中进行。
显示与其他线程之间的来回调用
右击
“调用堆栈”
窗口,然后选择
“包括对其他线程和来自其他线程的调用”
。
查看调用堆栈上的函数的源代码
在
“调用堆栈”
窗口中,右击要查看其源代码的函数,然后选择
“转到源代码”
。
查看调用堆栈上的函数的反汇编代码
在
“调用堆栈”
窗口中,右击要查看其反汇编代码的函数,然后选择
“转到反汇编”
。
从“调用堆栈”窗口运行到特定函数
请参见
运行到指定函数
。
在函数调用的退出点上设置断点
请参见
如何:从“调用堆栈”窗口针对函数调用设置断点
。
加载模块符号
如果要重新加载模块的符号,请在
“调用堆栈”
窗口中右击显示该模块的帧,然后选择
“加载符号”
。
在
“调用堆栈”
窗口中,可以为当前还未加载符号的代码加载调试符号。 这些符号可以是从 Microsoft 公共符号服务器下载的 .NET Framework 符号或系统符号,也可以是正在调试的计算机上的某个符号路径中的符号。
有关更多信息,请参见
如何:使用符号服务器
和
如何:指定符号路径
。
在
“调用堆栈”
窗口中,右击还未加载符号的帧。 此帧将显示为灰色。
指向
“加载符号”
,然后单击
“Microsoft 符号服务器”
或
“符号路径”
。
设置符号路径
在
“模块”
窗口中右击任一模块。
单击
“符号设置”
。
将打开
“选项”
对话框并显示
“符号”
页。
在
“选项”
对话框中单击“文件夹”图标。
在
“符号文件(.pdb)位置”
框中将出现一个光标。
键入所调试的计算机上的符号位置的目录路径名。 对于本地调试,此计算机指您的本地计算机。 对于远程调试,此计算机指远程计算机。
单击
“确定”
关闭
“选项”
对话框。