怎样调试C++代码
学会代码调试是每个程序员必须掌握的一项技能。通过调试,我们可以发现代码中隐藏的问题或者缺陷,从而使写出来的程序更加强壮和稳定。
那么,怎样调试C++代码呢?下面,就以VS为例,来给大家演示调试C++代码的方法。
一、打印当前变量值
- 01
在程序运行过程中,如果能知道当前某个表达式或变量的值,就能更好地判断程序是否正常执行或者判断问题的所在。那么,这该怎么做呢?
- 02
比如,有如图所示的一段代码,当程序运行到某个断点时,我想知道其中某个变量的值是多少。
- 03
一个比较通用的方法是首先在底部的调试窗口中切换到“监视”选项卡。
- 04
然后在名称一栏点击一下鼠标,输入需要显示的表达式或变量名,回车,即可显示其值。
- 05
当然,查看的表达式或变量不限于一个,你可以同时查看多个,并且还可以在查看值的同时看到它们的类型。
二、添加断言 _ASSERT
- 01
在某些情况下,我们可能希望在表达式或变量变成某个特定值时终止程序执行。比如说,当某个变量变成 false 时终止程序,这就可以使用_ASSERT宏。 _ASSERT宏的用法如下: 它的唯一一个参数是一个布尔类型的表达式,当表达式的值为假时,程序终止执行。
- 02
例如,在我们下面的示例中,我们希望当 Hashtable[Pos].bEmpty 为假时终止程序的执行,则可添加一句代码: _ASSERT(Hashtable[Pos].bEmpty);
- 03
这样,当程序运行时出现 Hashtable[Pos].bEmpty 为假的情况,就会弹出提示框终止运行。
三、使用 GetLastError函数得到错误信息
- 01
在进行代码调试时,GetLastError是一个非常好用的函数,尤其是当怎么也找不出错误时,使用此函数常常“柳暗花明又一村”。 该函数无需提供参数,不过,它的返回值能够给出一个错误代码。通过查询这个错误代码,我们常常能够找出代码出问题的原因。
- 02
例如,在一个对话框程序中,编译通过,但怎么也不弹出对话框来,令人百思不得其解。为了查找原因,我们可以在DialogBox函数后添加一句 GetLastError ,并在该处设一个断点,查看一下GetLastError的返回值,以确定究竟是哪儿出了问题。
- 03
我们根据返回的错误代码,对比windows错误代码表,很快就找到错误原因。原来,是对话框的样式设成子窗口样式了。