在 Visual Studio 中调试时映射调用堆栈上的方法
本文转自:https://msdn.microsoft.com/zh-cn/library/dn194476.aspx
1、创建代码图,以便在调试时对调用堆栈进行可视化跟踪。 你可以在图中进行标注以跟踪代码执行的操作,以便专注于查找 Bug。
你将需要:
可调试的代码,例如 Visual C# .NET、Visual Basic .NET、C++、JavaScript 或 X++
开始调试。 (键盘:“F5”)
在你的应用进入中断模式或你单步执行某一函数之后,请选择“代码图”。 (键盘:Ctrl + Shift + `)
当前的调用堆栈在新代码图上显示为橙色:
在你继续调试时,该代码图将自动更新。
添加注释以跟踪代码发生的情况。 若要在注释中添加新行,请按 Shift + Return。
运行你的应用到下一个断点或单步执行某一函数。 此图将添加新的调用堆栈。
现在你已生成一个图,下一步做什么? 如果你正在使用 Visual C# .NET 或 Visual Basic .NET,请添加诸如字段、属性和其他方法等项,以便跟踪代码发生的情况。
双击某个方法以查看其代码定义,或者使用该方法的快捷菜单。 (键盘:在图上选择该方法,然后按 F12)
添加要在图上跟踪的项。
说明 |
---|
默认情况下,向图添加项还会添加父组节点(如类、命名空间和程序集)。 尽管这很有用,不过可以通过使用图工具栏上的“包括父级”按钮关闭此功能,或通过在添加项时按 CTRL,来仅仅保留图。 |
在这里,你可以轻松查看哪些方法使用了相同的字段。 最近添加的项显示为绿色。
继续生成图以查看更多代码。
通过代码可视化,可帮助你更快发现 Bug。 例如,假设你正在一个绘图程序中调查 Bug。 当你绘制一条线并尝试撤消该操作时,直到你绘制另一条线后才会发生变化。
因此,可在 clear
、undo
和 Repaint
方法中设置断点,启动调试,然后生成如下所示的图:
你注意到图中所有用户笔势均调用 Repaint
,但 undo
除外。 这可能解释了 undo
为何不立即发挥作用。
在修复此 Bug 并继续运行程序后,图中增加了从 undo
到 Repaint
的新调用:
并非所有调用都会显示在图中。 为什么?
默认情况下,只有你自己的代码会显示在图中。 若要查看外部代码,请在”调用堆栈“窗口中打开它:
或在 Visual Studio 调试选项中关闭“启用‘仅我的代码’”:
更改图是否会影响代码?
更改图不会对代码造成任何影响。 你可随意在图上重命名、移动或移除任何内容。
这个消息是什么意思:“关系图可能基于旧版本的代码”?
在你上次更新图后,代码可能已发生更改。 例如,图中的某个调用可能已在代码中不存在了。 请关闭此消息,然后在再次更新图之前,尝试重新生成解决方案。
我如何控制图的布局?
打开图工具栏上的“布局”菜单:
更改默认布局。
若要停止自动重新排列图,请关闭“调试时自动布局”。
若要在添加新项时尽可能少地重新排列图,请关闭“增量布局”。
我能否与他人共享此图?
你可以导出映射,将其发送给他人(如果你有 Microsoft Outlook)或保存到你的解决方案中,以便你将其签入 Team Foundation 版本控制。
我如何停止此图自动添加新的调用堆栈?
选择图工具栏上的 。 若要手动向图中添加当前的调用堆栈,请按 Ctrl + Shift + `。
在你进行调试时,图中将继续突出显示现有调用堆栈。
项图标和箭头代表什么?
若要获取有关某个项的详细信息,请将鼠标指针移动到它上方,然后查看该项的工具提示。 你还可以查看“图例”来了解每个图标的含义。
在 Visual Studio 中调试时映射调用堆栈上的方法的更多相关文章
- 在Visual Studio中调试时,如何检查有关进程令牌的详细信息?
从Visual Studio 2005开始,watch窗口获得了一个伪寄存器,用于调查有关进程令牌的详细信息.所以,你只要开始调试,在监视窗口中写下“$user”, 有时查看特权和组的扩展视图会很有趣 ...
- 在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题)
在Chrome+Visual Studio中调试asp.net程序很慢的问题(Firefox也有类似问题) 今天开始起在Chrome中调试,发现问题主要出在菜单栏(layout文件)中,google了 ...
- [译]如何在visual studio中调试Javascript
本文翻译youtube上的up主kudvenkat的javascript tutorial播放单 源地址在此: https://www.youtube.com/watch?v=PMsVM7rjupU& ...
- [No0000AE]在 Visual Studio 中调试 XAML 设计时异常
在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...
- 在 Visual Studio 中调试 XAML 设计时异常
在 Visual Studio 中进行 WPF, UWP, Silverlight 开发时,经常会遇到 XAML 设计器由于遭遇异常而无法正常显示设计器视图的情况.很多时候由于最终生成的项目在运行时并 ...
- Visual Studio 在调试时启用编辑功能
Visual Studio边调试边修改 如果你在调试一个web应用程序的时候,想进行编辑,可以有如下两种方法: 方法一:在web项目的属性页里的web标签页,选中"启用编辑并继续&qu ...
- 解决Visual Studio 2013调试时 Web服务框架中出现了无法识别的错误 问题
此问题出现过很多次,点帮助,google, baidu 都没解决,后经过摸索解决,记录下来1.查找80port是否有被占用情况,需要查看skype[这东西不知道为什么为占用80], Reporting ...
- [Visual Studio] VS2012调试时很慢的解决方案
1.转自http://guooge.com/archives/408.html VS2010调试极慢获取出现死机,因为启动了IntelliTrace Visual Studio 2010 Ulti ...
- visual studio 2017调试时闪退。
解决方案: 在工程上右键--->属性--->配置属性--->连接器--->系统--->子系统(在窗口右边)--->下拉框选择控制台(/SUBSYSTEM:CONSO ...
随机推荐
- 转-Spring Framework中的AOP之around通知
Spring Framework中的AOP之around通知 http://blog.csdn.net/xiaoliang_xie/article/details/7049183 标签: spring ...
- css 多个不定数量提交按钮居中显示,纯css解决
前几天在公司修改一个css 多个按钮居中问题,其实这样的问题很多前端程序员都遇到过,举个例子吧: 在一行中有三个按钮或是两个按钮...个数不定,然后间距固定:然后就有很多人把所有按钮放到一个div中, ...
- D3的基本设计思路
学习一项新技术,首先要搞清楚它的基本设计思路,有了这个宏观的技术架构,使用该技术起来,就会得心应手了.否则,就会不知道如何下手,即使看到人家的例子程序,可能也不知其所以然. 下面,就简单的结合自己研究 ...
- .NET操作Xml类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.I ...
- cPage分页,asp.net自定义分页,url传值分页,支持datalist、gridview、Repeater等
asp.net分页是最最常用的功能,实现方式也很多,使用不同的控件有不同的分页方式. 下面分享一个我们团队内部使用了多年的一个分页控件cPage,是自己设计编写,没有冗余,简单.快速. cPage,现 ...
- MySQL 使用笔记
1. How to export the database of mysql go to command line, use "CMD" cd C:\Program Files\ ...
- 彻底解决phpcms v9升级后,文章发布出现: Mysql 1267错误:MySQL Error : Illegal mix of collations 解决办法
彻底解决phpcms v9升级后,文章发布出现: MySQL Query : SELECT * FROM `withli_a`.`v9_keyword` WHERE `keyword` = '吼吼' ...
- 用ADO.NET存入数据库
点击按钮存入登录名和密码: const string connstr = @"data source=USER-20160705UW\JSQL;initial catalog=Test;in ...
- 使用maven一步一步构建spring mvc项目
1 使用eclipse构建maven web项目 1.1新建Maven的web项目 打开菜单File –New-MavenProject. 点击Next 选择模板类型archtype——ma ...
- 原生js获取元素style属性
function getStyle(ele,attr){ if( ele.currentStyle ){ return ele.currentStyle[attr]; // ie } else { r ...