调试是软件开发周期中很重要的一部分。它具有挑战性,一起也很让人疑问和烦恼。总的来说,关于稍大一点的程序,调试是不可避免的。比来几年,调试东西的开展让许多调试使命变的越来越简略和省时。
这篇文章总结了能够节约你很多时刻的11个Visual studio的调试窍门和办法。
1 悬停鼠标检查表达式值
调试是很有挑战性的。比方在函数内逐渐运转能够看出哪里犯错,检查仓库信息能够晓得函数被谁调用等等……可是无论哪种情况下,检查表达式和部分变量的值都是很费事的(把表达式和部分变量放到watch窗口里)。一种更简略的办法,把鼠标停在所需检查的数据上。若是是类或布局,那么点击翻开能够很便利疾速地检查其字段。
2 在运转过程中改动变量值
调试器不仅仅是剖析程序溃散和怪异行动的东西,还能够经过逐渐调试检查数据和行动能否契合程序预期的办法处理许多bug。有时,你会想能否设置某些条件为真,程序就能正确运转了。其实你只需把鼠标移动到变量上,双击值,然后输入你需求的值。这样就不需求修正代码,重启程序了。
3 设置下一个运转方位
一个典型的调试事例是咱们常常会用逐渐调试的办法去剖析为什么函数犯错了。这时你遇到这个函数调用其他函数回来过错,而这个过错不是你想要的,你该怎么办?重启调试器?这里有个非常好的办法,直接把黄色的运转方位箭头拖到你想要的运转方位。其实就是越过中心运转代码,直接到想要的方位。很简略吧。
4 修正然后持续运转
在运转一个很杂乱的程序和插件时,发现一个过错,可是不想浪费时刻去重编译重启动程序。很简略,只需在这个方位修正这个bug,然后持续调试。Visual studio会修正这个程序,使得你能够持续调试而不需求重启程序。
值得注意的是“修正然后持续运转”这个功用有几个约束。一,它不能在64位代码上运用。若是想运用这个功用,到项目设置里的编译选项,挑选”x86”作为方针渠道。不要忧虑,这方针渠道在reslease装备是和”debug是别离的,也就是说依然是”Any CPU”的设置。二,“修正然后持续运转”这个功用仅适用于一个函数内部改动。若是你想要改动这个函数的声明或许添加新的办法,你只能挑选重启程序,或许不做任何改动持续。若是修正的办法中包括lambda表达式,则意味着修正了编译器主动生成的托付类型,这样会致使编译器中止运转。
5 一个便利的检查窗口
大多数现代的调试器都有检查窗口。可是,visual studio的检查窗口运用格外简略,你能很便利的添加和删去变量。只需在窗口里点击空白行,输入表达式然后按enter键。或许点击表达式,按delete键删去不需求的表达式。
在调试窗口不仅仅能够检查一般的变量值,乃至能够输入$handles去追寻翻开的句柄数量,$err去检查函数的过错代码(然后运用 Tools->Error 检查过错代码的描绘)或许输入 @eax(在64位下是@rax )检查包括函数回来值的寄存器值。
6 注释反汇编
运用内部的反汇编功用使得优化部分代码愈加简略。Visual studio能够在你的每一行代码下显现汇编指令,而且能够逐渐调试汇编代码,也能够在恣意方位设置断点。检查和修正汇编代码类似于c++。
7 仓库信息的线程窗口
调试多线程代码是很苦楚的。或许也是风趣的。这取决于你的调试器。Visual studio 一个很赞的功用就是在线程窗口检查线程的仓库信息。你能很便利的直接看到一切线程以及他们的仓库信息。
8 条件断点
若是你想重现一个小概率事件,可是断点在很多不需求的条件下也会触发。你能够很简略的设置条件断点。在断点窗口设置该断点条件,Visual studio 会主动疏忽不契合条件的断点。
9 内存窗口
一些bug是由过错的布局界说、短少对齐特点等缘由导致的。检查每行内存的内容很简单定位和处理这些bug. Visual studio 的内存窗口能够把数据翻译成8/16/32/64-bit数字或许浮点数。你能够在修正窗口直接改动数值。
10 跳转到界说
若是你在处理他人写的代码一个bug,会遇到“这个类型是什么”“这个函数做什么的”之类的疑问,你能够运用visual studio的跳转到界说的指令来检查类型或函数的界说。
11 指令窗口
这个小窍门是由chaau主张的,它能节约你很多的时刻。Visual studio撑持一个指令窗口,你能够经过菜单View->Other Windows->Command Window 翻开。你能够在窗口里输入不一样指令使调试主动化。比方,能够经过很简略的指令去的测验MFC的COleDateTime变量。
? dt.Format(“%Y-%m-%d %H:%M:%S”)
英文原文:Ivan Shcherbakov,编译:@halftone_被禁用了