12个Visual Studio调试效率技巧


12个Visual Studio调试效率技巧

文章插图
 
在这篇文章中,我们假定读者了解VS基本的调试知识,如:
  • F5 开始使用调试器运行程序
  • F9 在当前行设置断点
  • F10 运行到下一个断点处
  • F5 从被调试的已停止程序恢复执行
  • F11 步进到函数内(如果当前程序指针指向一个函数)
  • F10 步过函数(如果当前程序指针指向一个函数)
  • Shift+F11 步出执行的函数
  • 暂停执行
  • 附加到进程
  • 鼠标悬停时快速查看源代码中的元素
  • 调试窗口:局部变量、监视、即时窗口、模块、调用堆栈、异常设置
许多开发人员使用这个功能强大的工具包来处理调试会话 。然而,Visual Studio调试工具提供了更多的功能 。下面是一系列Visual Studio调试效率技巧 。注意,这些提示和快捷方式已经在的Visual studio 2019 16.6 EN-US版本中进行了验证,验证时Visual studio没有安装扩展 。
1、运行到光标位置使用快捷键Ctrl+F10,您可以让调试器运行到光标所在行位置 。
12个Visual Studio调试效率技巧

文章插图
 
2、通过点击鼠标,运行到当前位置在调试运行的程序时,通过鼠标悬停在当前行的代码上时,出现绿色的符号,可以点击此符号,直接让断点运行到此处 。
12个Visual Studio调试效率技巧

文章插图
 
3、在此处作为下一条要执行的语句在调试运行的程序时,通过鼠标悬停在当前行的代码上时,通过按住Ctrl键转换为将此处作为下一条要执行的语句 。它与通过绿色箭头符号运行到这里不同,此功能将会跳过中间的语句,直接将断点跳转到此处 。因此,在下面的动图中,我们可以在监视窗口中引用obj仍然为null,中间的MyClass构造函数并没有被执行 。
12个Visual Studio调试效率技巧

文章插图
 
4、数据断点:当值发生变化时,触发中断(值更改时中断)当你设置一个非静态的设置器为断点时,当所有对象的属性的值发生更改时触发断点 。通过局部窗口(监视器窗口)右键点击:值更改时中断菜单,单个对象也可以获得相同的行为 。
下面的动画说明了这个功能,只有当obj2.Prop发生变化时,命中断点,而obj1.Prop发生变化时没有命中断点 。
注意:数据断点绑定到活动对象时,旨在调试期间起作用 。因此,一旦调试过程停止,设置的断点就会丢失,在以后的调试过程中不能重用它 。
12个Visual Studio调试效率技巧

文章插图
 
5、条件断点可以将条件附加到断点中,以便尽在特定场景中触发中断 。在下面的动图中,我们在循环中定义条件i>6的断点 。然后点击继续,可以看到一旦断点停止,i的值实际上变成了7 。
12个Visual Studio调试效率技巧

文章插图
 
6、跟踪断点在遇到断点时,停止程序执行时最常见的操作 。但是,你可以选择在输出窗口中不终止(或带终止)打印一些跟踪信息 。下面的动图说明了这种可能性 。我们在输出窗口中跟踪i从0到9的值 。注意:跟踪断点在编辑器的断点显示位置显示为菱形形状 。
注意,条件和跟踪操作都可以在断点上指定 。
12个Visual Studio调试效率技巧

文章插图
 
7、跟踪超出作用域的对象在监视窗口中,通过当前执行范文内引用的名称来跟踪对象 。但是,当这样的跟踪引用超出作用域时,即使在引用对象仍处于活动状态时,它在监视窗口的上下文也不安的毫无意义并且被禁用 。
在许多情况下,我们想继续跟踪作用域外对象的状态 。为此,请在监视窗口中右键单击此类引用,单击菜单[Make Object ID] 创建对象ID(M),并要在监视器中添加$1(或者$2,$3,...,取决于你已经创建了多个对象ID) 。
下面的动图演示了如何跟踪作用域外对象的属性获取器的状态,该属性获取器以字符串的形式返回实际的日期时间 。它很好地显示了当引用obj在Fct()上下文中超出作用域时,要观看的obj项将被禁用,而$1仍然会获得更新 。
12个Visual Studio调试效率技巧

文章插图
 
8、查看函数返回的值函数返回的值有时在源代码中被忽略,或者有时这个值在调试时无法被显示的访问 。


推荐阅读