创建代码映射,以便在调试时对调用堆栈进行可视化跟踪。 你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug。
需要:
可调试的代码,例如 Visual C#、Visual Basic、C++、JavaScript 或 X++
请参阅:
-
若要详细了解使用代码图时能使用的命令和操作,请参阅浏览和重新排列代码图。
生成调用堆栈图
开始调试。 (键盘:F5)
在应用进入中断模式或你单步执行某一函数之后,请选择“代码图”。 (键盘:Ctrl + Shift + `)
当前的调用堆栈在新代码图上显示为橙色:
在你继续调试时,该代码图将自动更新。 请参阅使用下一个调用堆栈更新图。
对代码进行标注
添加注释以跟踪代码中的情况。 若要在注释中添加新行,请按 Shift + Return。
使用下一个调用堆栈更新图
运行你的应用到下一个断点或单步执行某一函数。 此图将添加新的调用堆栈。
向图中添加相关代码
现在你已生成一个图,下一步做什么? 如果你使用的是 C# 或 Visual Basic,请添加字段、属性和其他方法等项,以便跟踪代码中发生的情况。
双击某个方法以查看其代码定义,或者使用该方法的快捷菜单。 (键盘:在图上选择该方法,然后按 F12)
添加要在图上跟踪的项。
注意
默认情况下,向图添加项还会添加父组节点(如类、命名空间和程序集)。 尽管这很有用,不过可以通过使用图工具栏上的“包括父级”按钮关闭此功能,或通过在添加项时按 CTRL,来仅仅保留图 。
在这里,你可以轻松查看哪些方法使用了相同的字段。 最近添加的项显示为绿色。
继续生成图以查看更多代码。
使用图查找 Bug
通过代码可视化,可帮助你更快发现 Bug。 例如,假设你正在一个绘图程序中调查 bug。 当你绘制一条线并尝试撤消该操作时,直到你绘制另一条线后才会发生变化。
因此,可在 clear
、undo
和 Repaint
方法中设置断点,启动调试,然后生成如下所示的图:
你注意到图中所有用户笔势均调用 Repaint
,但 undo
除外。 这可能解释了 undo
不立即发挥作用的原因。
在修复此 Bug 并继续运行程序后,图中增加了从 undo
到 Repaint
的新调用:
问答
并非所有调用都会显示在图中。 为什么?
默认情况下,只有你自己的代码会显示在图中。 若要查看外部代码,请在”调用堆栈“窗口中打开它:
或在 Visual Studio 调试选项中关闭“启用仅我的代码”:
更改图是否会影响代码?
更改图不会对代码造成任何影响。 你可随意在图上重命名、移动或移除任何内容。
“关系图可能基于旧版本的代码”这一消息的含义是什么?
在你上次更新图后,代码可能已发生更改。 例如,图中的某个调用可能已在代码中不存在了。 请关闭此消息,然后在再次更新图之前,尝试重新生成解决方案。
我如何控制图的布局?
打开图工具栏上的“布局”菜单:
更改默认布局。
若要停止自动重新排列图,请关闭“调试时自动布局”。
若要在添加新项时尽可能少地重新排列图,请关闭“增量布局”。
我能否与他人共享此图?
你可以导出图,将其发送给他人(如果你有 Microsoft Outlook)或保存到你的解决方案中,以便你将其签入源代码管理。
我如何停止此图自动添加新的调用堆栈?
选择
。 若要手动向图中添加当前的调用堆栈,请按 Ctrl + Shift + `。
在你进行调试时,图中将继续突出显示现有调用堆栈。
项图标和箭头代表什么?
若要获取有关某个项的详细信息,请将鼠标指针移动到它上方,然后查看该项的工具提示。 你还可以查看“图例”来了解每个图标的含义。
请参阅: