Visual Studio Debug and Shortcuts

快捷键

快捷键 作用
Ctrl+Tab 在所有打开的窗口之间移动切换
Shift+Alt+Enter 进入或退出编辑窗口全屏模式
Ctrl± 在项目中已修改的元素间向后切换
Ctrl+Shift± 在项目中已修改的元素间向前切换
Alt+鼠标左键 选择文本块
Shift+Alt+Arrow 选中代码的一个垂直部分(比如修改一个变量声明中的前缀)
Ctrl+Shift+V 遍历剪贴板上的最后20个代码段
Ctrl+Alt+A 打开命令窗口,快捷执行vs里的命令
Ctrl+Alt+I 打开即时窗口,在编译时可做计算
Ctrl+,Ctrl+D 打开代码定义窗口,双击某函数可以看到其定义
Ctrl+Shift+F 快速查找
Ctrl+Shift+H 快速替换,如果用正则表达式会很方便
Ctrl+D 输入的内容前面加上前缀>,就相当于命令窗口
Ctrl+K,Ctrl+K 添加/删除书签
Ctrl+K,Ctrl+W 显示书签管理窗口
Window->Split 把代码编辑器窗口分成两部分,同时显示同一个文件的不同部分。
Architecture->New Diagram 可以绘制UML
右键选择"查看调用层次结构" 处理不熟悉的项目或重构项目时很有用

对.sln文件进行一个快速编辑,用如下代码替换文件的前两行,就能用vs2008打开vs2010的项目。

1
2
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008

调试

使用调试窗口

这些窗口均可在此菜单路径下打开:Debug->Windows。

  • Breakpoints窗口。该窗口显示应用程序中已经设置的所有断点信息。方便定位、禁用和删除断点。
  • Output窗口。可用作标准输出。
  • 监视窗口Quick Watch,在变量上右键选择快速监视,显示特定时刻的变量值。Watch1-4窗口,在用户单步调试代码时监视变量的值。Autos窗口,包含了当前行、前一行和后一行中的变量。Locals窗口包含了当前方法中使用的所有变量。
  • 代码执行窗口Call Stack窗口显示调用堆栈,跟踪执行路径,右键可以设置断点或选择要显示的信息。Threads窗口列出应用程序的所有活跃线程。Modules窗口显示了当前执行的程序所引用的程序集列表。Processes窗口用于多进程端对端调试。
  • 内存窗口Memory1-4窗口用于查看特定位置处的内存数据。Disasembly窗口查看反汇编。Registers窗口查看寄存器。

断点调试

断点

**断点(breakpoint)**可以在指定的位置暂停或者中断应用程序的执行。当暂停的程序处于中断模式时,VS会显示各种调试窗口。

设置断点

三种断点:
普通断点(F9/左边栏点击/右键菜单/Debug菜单),函数断点(Debug->New Breakpoint->Break at Function,随后指定要设置断点的函数名称),地址断点(在Call Stack窗口,中断模式时添加断点)。

为断点指定条件

1.条件。右击断点设置。通过布尔表达式指定启用断点的条件,为false的话程序就会跳过断点继续执行。或设置条件发生改变时中断应用程序。红点和白色的十字。
2.计数。断点经历一定数目的迭代以后再启用。计数器的条件可以是:Always, Is equal to, Multiple of, Is greater than or equal to。

过滤

主要用于在多线程应用程序上把断点限制在一个特定的线程上。

断点操作

删除断点、禁用断点、移动断点、给断点加标签(这样可以在Breakpoints窗口对它们进行批处理操作)、导入和导出断点(可以备份和恢复断点,在开发人员之间共享。在Breakpoints窗口点击工具栏上的"导出满足当前条件的所有断点")。

跟踪点

**跟踪点(tracepoint)**与断点不同,在遇到跟踪点时,跟踪点会触发附加的事件。在调试程序时,可以动态地调整跟踪点而不影响代码的功能。

创建跟踪点

在一个已有断点上右键菜单中选择When Hit(命中条件),可以向控制台窗口写入信息或者运行宏命令。红色的菱形。

跟踪点操作

向控制台窗口打印信息或者运行一个宏。
输出消息默认是Function: $FUNCTION, Thread: $TID $TNAME,除了对话框提示之外还有两个关键字:$FILEPOS指定了当前文件的位置;$TICKS用作关联时间指示器。
宏是用VB编写的。如果在VS中重复执行同一组动作,宏就很好用。View->Other Windows->Macro Explorer中可以选择和编辑宏。除了自己写VB之外,还可以自动记录,Tools->Macros->Record Temporary Macro(Ctrl+Shift+R),会立即启动记录器,记录用户在VS中执行的所有动作。

执行点

正在执行的代码行。黄色箭头。

代码的执行

1.Stepping Over(F10)。执行当前焦点所在的行并前进到当前代码块的下一行。如果到达了代码段的末尾,就返回调用块中。
2.Stepping in(F11)。如果是一个复杂的行,会执行所有的用户代码,进入被调用的子代码段。
3.Stepping Out(Shift+F11)。如果不小心进入一个很长的方法时,此功能将光标移动到调用当前方法的位置。

移动执行点

如果不小心跳过了关心的代码,拖动黄色箭头。小心使用此功能,可能导致无法预料的行为和变量值。

Edit and Continue功能

允许用户在执行过程中对程序进行修改。只要暂停程序,就可以更改代码,再恢复执行。新代码或者修改以后的代码会在程序中动态添加,所作的修改会立刻生效。

原始编辑

可以进行的修改存在一些限制。原始编辑是应用程序必须停止并重新构建的代码修改。比如:修改当前或者活动的语句、对全局符号的修改(比如,新的类型和方法,或者修改方法、事件和属性的签名)、对特性的修改。

停止应用修改

VS把修改整合或者应用到正在运行的程序中需要时间,如果希望取消,Debug->Stop Applying Code Changes。

数据提示

把光标停放在变量上,就会在数据提示中显示变量的值。
右击数据提示可以执行很多操作,如复制所显示的值、把变量添加到监视窗口中、编辑简单类型的变量的当前值。
可以固定数据提示。
数据提示可以导入和导出到外部的XML文件中。Debug->Import(Export) DataTips。

[1] Visual Studio 2010高级编程