通过使用 调用堆栈 窗口,可以查看堆栈上当前存在的函数或过程调用。 调用堆栈 窗口显示调用方法和函数的顺序。 调用堆栈是检查和了解应用执行流的好方法。
当 调试符号 不适用于调用堆栈的一部分时,调用堆栈 窗口可能无法显示该部分的正确信息,而是显示:
[Frames below may be incorrect and/or missing, no symbols loaded for name.dll]
备注
你看到的对话框和菜单命令可能与此处所述的命令不同,具体取决于活动设置或版本。 若要更改设置,请在 工具 菜单中选择 “导入和导出设置”。 请参阅重置所有设置。 调用堆栈 窗口类似于 Eclipse 等 IDE 中的“调试”透视。
在调试器中查看调用堆栈
调试时,在 调试 菜单中,选择 Windows > 调用堆栈 或按 ctrl
+alt
+C
。
显示调用堆栈窗口的 箭头标识执行指针当前所在的堆栈帧。 默认情况下,此堆栈帧的信息会显示在源、局部变量、自动变量、监视和 反汇编 窗口中。 若要将调试器上下文更改为堆栈上的另一帧,切换到另一个堆栈帧。
显示调用堆栈窗口的
黄色箭头标识执行指针当前所在的堆栈帧。 默认情况下,该堆栈帧的信息显示在源、“局部变量”、“自动变量”、“监视”和“反汇编”窗口。 若要将调试器上下文更改为堆栈上的另一帧,切换到另一个堆栈帧。
还可以在调试时在调用堆栈中查看异常堆栈帧。 有关详细信息,请参阅 在异常帮助程序中查看调用堆栈。
在“调用堆栈”窗口中显示非用户代码
若要显示外部或非用户代码,请切换“显示外部代码”,右键单击“调用堆栈”窗口并选择“显示外部代码”。
若要显示外部代码或非用户代码,请从调用堆栈工具栏中切换 显示外部代码 按钮,或右键单击 调用堆栈 窗口,然后选择 显示外部代码。
非用户代码是启用 “仅显示我的代码” 功能时未显示的所有代码。 在托管代码中,默认隐藏非用户代码帧。 以下表示法将代替非用户代码框架:
[<External Code>]
切换到另一个堆栈帧(更改调试器上下文)
在 调用堆栈 窗口中,右键单击要查看其代码和数据的堆栈帧。
也可双击“调用堆栈”窗口中的帧以切换到该帧。
选择“”切换到帧“”。
所选堆栈框架旁边会显示一个带有卷尾的绿色箭头。 执行指针保留在原始帧中,该帧仍标有黄色箭头。 如果从 调试 菜单中选择 步骤 或 继续,执行将继续在原始帧中进行,而不是在您选择的帧中进行。
查看所有相关帖子
切换 “查看所有线程”按钮,以查看 并行堆栈窗口中所有相关线程。
调用堆栈搜索
可以通过在位于调用堆栈窗口左上角的搜索框中键入相关搜索词来搜索相关的调用堆栈帧。 相关的调用堆栈帧将突出显示。
查看调用堆栈上函数的源代码
在“调用堆栈” 窗口中,右键单击要查看其源代码的函数,然后选择“转到源代码”。
从“调用堆栈”窗口运行到特定函数
在 调用堆栈 窗口中,选择函数,右键单击,然后选择 运行到游标。
在函数调用的退出点上设置断点
请参阅 ,在调用堆栈函数处设置断点。
显示对另一个线程或来自另一个线程的调用
右键单击“调用堆栈”窗口,然后选择“包括对其他线程和来自其他线程的调用”。
直观地跟踪调用堆栈
在 Visual Studio Enterprise(仅限)中,可以在调试时查看调用堆栈的代码映射。
在 调用堆栈 窗口中,打开快捷菜单。 选择 在代码图上显示调用堆栈(Ctrl + Shift + `)。
有关详细信息,请参阅调试时映射调用堆栈上的方法。
查看调用堆栈上函数的反汇编代码(C#、C++、Visual Basic、F#)
在 调用堆栈 窗口中,右键单击要查看其反汇编代码的函数,然后选择 转到反汇编。
更改显示的可选信息
在“调用堆栈”窗口中,右键单击并设置或清除“显示<你需要的信息>”。
自动反编译 .NET 外部代码
从 Visual Studio 2022 版本 17.7 开始,可以通过在“调用堆栈”窗口中双击外部代码来自动编译 .NET 代码。 有关详细信息,请参阅 调试时从 .NET 程序集生成源代码。
模块加载符号(C#、C++、Visual Basic、F#)
在 调用堆栈 窗口中,可以为当前未加载符号的代码加载调试符号。 这些符号可以是从Microsoft公共符号服务器下载的 .NET 或系统符号,也可以是正在调试的计算机上的符号路径中的符号。
请参阅指定符号 (.pdb) 和源文件。
加载符号
在 调用堆栈 窗口中,右键单击未加载符号的堆栈帧。 该帧将变暗。
指向“加载符号”,然后选择“Microsoft 符号服务器”(如果可用),或浏览到符号路径。
设置符号路径
在 调用堆栈 窗口中,从快捷菜单中选择 符号设置。
此时将打开“选项”对话框,并显示“符号”页。
选择“符号设置”。
在“选项 对话框中,单击”文件夹“图标。
“符号文件(.pdb)位置”框中随即出现一个光标。
输入要调试的计算机上的符号位置的目录路径名。 对于本地和远程调试,这是本地计算机上的路径。
选择 确定 关闭 选项 对话框。