创建代码图,以在调试时直观地跟踪调用堆栈。 可以在地图上做笔记来跟踪代码正在执行的工作,以便你可以专注于查找错误。
有关可用于代码映射的命令和操作的详细信息,请参阅 浏览和重新排列代码映射。
重要
只能在 Visual Studio Enterprise 版本中创建代码映射。
下面是代码图的简要概述:
映射调用堆栈
在 Visual Studio Enterprise C#、Visual Basic、C++ 或 JavaScript 项目中,选择 “调试>开始调试 ”或按 F5 开始调试。
应用进入中断模式或单步执行函数后,选择 “调试>代码映射”或按 Ctrl+Shift+`。
当前调用堆栈在新代码图上显示为橙色:
继续调试时,代码图会自动更新。 更改地图项或布局不会以任何方式影响代码。 可以随意重命名、移动或删除地图上的任何内容。
若要获取有关项的详细信息,请将鼠标悬停在项目上方并查看项的工具提示。 还可以选择工具栏中的 图例 ,了解每个图标的含义。
注释
该消息 图可能基于旧版本的代码 意味着代码映射顶部的代码可能在您上次更新后已更改。 例如,映射中的调用可能不再存在于代码中。 关闭消息后,再尝试重新生成解决方案,然后更新映射。
映射外部代码
默认情况下,只有你自己的代码才会显示在地图上。 在地图上查看外部代码:
在 “调用堆栈 ”窗口中右键单击并选择“ 显示外部代码”
或者,在 Visual Studio 中清除 “启用仅我的代码 ”复选框:
此选项在“所有设置>常规”部分下的“工具”(或>”)>选项窗格中可用:
此选项在“调试常规”部分下的>”(或“调试”>)对话框中可用:
控制地图的布局
更改地图的布局不会影响代码。
若要控制地图的布局,请选择地图工具栏上的 “布局 ”菜单。
在 “布局 ”菜单中,可以:
- 更改默认布局。
- 通过取消选择调试时自动布局,停止地图的自动重排。
- 通过取消选择 增量布局,在添加项时尽可能少地重新排列地图。
记下代码
可以添加注释来跟踪代码中发生的情况。
若要添加批注,请在代码图中右键单击并选择“ 编辑>新批注”,然后键入批注。
若要在批注中添加新行,请按 Shift+Enter。
使用下一个调用堆栈更新映射
将应用运行到下一个断点或单步执行函数时,映射会自动添加新的调用堆栈。
若要阻止地图自动添加新调用堆栈,请在代码图工具栏中选择
。 地图继续突出显示现有的调用堆栈。 若要手动将当前调用堆栈添加到地图,请按 Ctrl+Shift+`。
向地图添加相关代码
现在,你已获得 C# 或 Visual Basic 中的地图,接下来可以添加字段、属性和其他方法等项,以跟踪代码中发生的情况。
若要转到代码中方法的定义,请双击地图中的方法,或选择该方法并按 F12,或右键单击它并选择“ 转到定义”。
若要向地图添加要跟踪的项,请右键单击方法,然后选择要跟踪的项目。最近添加的项目以绿色显示。
注释
默认情况下,向映射添加项还会添加父组节点,例如类、命名空间和程序集。 可以通过选择代码图工具栏上的 “包括父级 ”按钮或在添加项目时按 Ctrl 来开启和关闭此功能。
继续生成地图以查看更多代码。
使用地图查找缺陷
可视化代码有助于更快地查找 bug。 例如,假设你正在调查绘图应用中的 bug。 当你画一条线并尝试撤销时,只有在画另一条线之后才会生效。
因此,在clear、undo和Repaint方法中设置断点,开始调试并生成如下所示的映射:
你注意到地图上所有用户手势都会调用Repaint,但undo例外。 这可能解释为什么 undo 不能立即工作。
在修复 bug 并继续运行应用后,地图会将从 undo 到 Repaint 的新调用添加进去。
与他人共享地图
可以导出地图,将其发送给具有 Microsoft Outlook 的其他人,将其保存到解决方案中,然后将其签入版本控制。
若要共享或保存地图,请使用代码映射工具栏中的 “共享 ”。