12个高效的VS调试技巧

介绍程序员

调试是软件开发周期中的一个很重要的部分,有时颇有挑战性,有时候则让程序员迷惑,有时候让程序员发疯,可是。能够确定的是,对于任何不是太那个微不足道的程序来讲,调试是不可避免的。近年来,调试工具的发展已经使得不少调试任务简单省时了。多线程

 

本文总结了十个调试技巧,当你使用VS的时候能够节省你不少时间。编辑器

1.悬停鼠标查看表达式函数

调试有时候颇有挑战性,当你步入一个函数想看看哪块出错的时候,查看调用栈来想一想值是从哪来的。另外一些状况下,则须要添加一些监视表达式,或者查看局部变量列表,这一般仍是花费一些时间的,可是。若是你把你鼠标指向你感兴趣的一个变量。你会发现事情简单多了。并且,类和结构体能够经过单击展开。这样。你就能够方便快捷的找到你想查看的变量了。工具

 

2实时改变值优化

调试器不只仅是一个分析程序崩溃或是异常结果的工具了,许多bug均可以经过步入新写的函数,检查函数是否如指望的那样运行来预防。有时候你可能会好奇“若是条件为真函数会正确运行吗”大多数状况下,根本不须要改变代码重启挑起,仅仅把鼠标悬停到一个变量上,双击值而后输入一个新值就能够了。。插件

 

3.设置下一条语句线程

一个典型的调试状况就是经过单步跟踪分析为何一个函数调用失败了。当你发现一个函数调用的另外一个函数返回错误的时候你会怎么作?重启调试?有更好的方法。拖动这个黄色的语句标识到你想下一步执行的语句前就能够了。好比你刚才失败的那块,而后步入。简单,不是吗?翻译

 

4.编辑而后继续debug

调试一个复杂的程序,或是一个插件的时候,在一个被调用不少次的函数处发现一个错误。可是不想浪费时间停下来,从新编译而后从新调试。没问题,仅仅在该处改正代码而后继续单步就能够。VS会修正程序而后继续调试不须要重启

 

注意,编辑而后继续有大量的已知限制,首先,64位代码是不行的。若是他若是为你的C#程序工做。就去工程设置的生成选项,而后目标平台为x86.不要担忧。发布版的目标平台和调试的时候是分开的。能够被设置为任何平台。。

 

第二.编辑而后继续改变在一个方法里应该是局部的。。若是你改变了方法签名,添加一些新方法或是类。你就不得不重启程序了。或者撤销改变来继续。改变方法也包含lambda表达式隐式修改的自动生成的代理类,所以也不能继续。

 

5.方便的监视窗口

大概现代的调试器都有一个监视窗口,不管如何。VS容许你简单的添加或移除变量。单击空行,输入你的表达式按下回车,或者是在不须要的表达式上按下Delete键就能够删除了。

并且。从监视窗口你不只仅能够看到“正常”的变量。你能够输入$handles 来追踪你的程序打开了多少句柄(能够方便的修复内存泄漏),输入$err 能够看到上一个函数的错误码,而后使用工具-错误信息能够看到更详细的描述,或者输入@eax(64位是@rax)来查看包含函数返回值的寄存器。

 

6.带注释的反汇编

使用交互式的反汇编模式可使得优化程序的关键部分变得很容易,VS给出对应你代码每一行的汇编指令,而且运行单步运行。同时,能够在任何位置设置断点。并且,表达式的查看和修改也像在C++代码里同样

 

7.带有栈的线程窗口 

调试多线程的程序是痛苦的。。或者也能够是颇有趣的。取决于你的调试器。VS2010真正优美的特性是线程窗口的栈视图,经过窗口的调用栈你能够方便的总览线程。

 

8.条件断点

若是你尝试经过断点再现一个罕见的事件,该状况引起了一些严重的错误。你能够添加条件断点。定义一个断点的条件,而后若是条件不成立,VS会忽略该断点

 

9.内存窗口 

有些bug由不正确的结构体定义引发,忽略的对齐属性等等。查看内存中的内容能够定位而后修复bug。VS提供了一个放百年的内存窗口,能够把值以8/16/32/64位的形式展现。还有浮点值。也容许实时改变他们。就像在文本编辑器里同样。

 

 

10.转到定义

这个特性不是直接关于调试的,而是关于浏览大项目的。若是你尝试找到一些不是你本身写的代码中的错误,快速知道“这个类型是什么”或者“这个函数是干吗的”,能够节省不少时间,VS经过一个转到定义命令方便了你。

 

11.命令窗口

第十一的技巧chaau已经建议过了。确实能够节省不少时间,VS支持命令窗口,能够经过,视图-其余窗口-命令窗口来启动。一旦激活,你能够输入不一样的命令来自动化调试。举个例子。你能够经过以下命令 简单的模拟MFC COleDateTime  变量。

 
? dt.Format("%Y-%m-%d %H:%M:%S") 

许可

本文包括源代码和文件在CPOL下受权。

 

原文地址:10plus-powerful-debugging-tricks-with-Visual-Studi

著做权声明:本文由http://leaver.me 翻译,欢迎转载分享。请尊重做者劳动,转载时保留该声明和做者博客连接,谢谢!

 

12.查看前几步调试过程

有时候调试时忽然出现一个异常,想要知道这个异常是哪一步出错了产生的,就须要逆向查看执行步骤,暂时百度没有发现有专门回到上一步的方法(阅读者若是知道还请不吝赐教),就本身找了一个

相关文章
相关标签/搜索