不幸的是,编译器将无法赶上这些类型的问题,因为编译器只知道你写的,不是你意。
在上面的例子中,误差是相当容易被发现。但在大多数不平凡的计划,许多语义错误不会很容易找到目测的代码。
幸运的是,这就是一个调试器能真正派上用场。
调试器
调试器是一个计算机程序,它允许程序员控制程序如何执行,并看着它运行会发生什么。例如,程序员可以使用调试器,由线到执行程序行,考察沿途变量的值。通过对变量的实际值进行比较,以期望是什么,或通过代码看执行的路径,调试器可以帮助极大追捕语义错误。
早期的调试器,如GDB,有命令行界面,在这里程序员必须键入神秘的命令,以使他们的工作。后来调试器(比如Borland的Turbo调试器)带着自己的“图形”前端,使他们的工作更容易。几乎所有的现代集成开发环境可这些天都集成调试器 - 也就是,调试器是内置的编辑器,这样你就可以调试使用,你用它来编写代码(而不需要切换程序),在相同的环境。
几乎所有的现代调试器包含相同的组标准的基本特征 - 然而,存在如何菜单来访问这些功能被布置,甚至更少的一致性的键盘快捷键而言小的一致性。虽然我们的例子是微软的Visual Studio 2005 Express,则应该不会有大问题搞清楚如何访问每一个我们讨论无论哪个开发环境中使用的功能。
在开始之前:请确保您的程序设置为使用调试生成配置。
步进
步进是一个调试器功能,它允许您执行(步),按行代码行。这可以让你检查隔离的每一行代码,以确定它是否表现为意。
实际上有3种不同的步进命令:步入,跳过和步出。我们将涵盖每一个都需要。
如你所知,在运行程序时,执行与呼叫开始的main()。因为我们要内部调试的main(),让我们开始使用“步入”命令。
在Visual Studio 2005 Express中,进入调试菜单,选择“单步执行”,或按F11。
如果您使用的是不同的IDE,发现在菜单中的“单步执行”命令,然后选择它。
执行此操作时,两件事情应该发生。首先,因为我们的应用程序是一个控制台程序,控制台输出窗口应该打开。这将是空的,因为我们没有输出任何东西。其次,你应该看到某种标记的出现主要左括号的左侧。在Visual Studio 2005 Express中,这个标记是一个黄色箭头。如果您使用的是不同的IDE,你应该看到的东西,有异曲同工之妙。
在上面的例子中,误差是相当容易被发现。但在大多数不平凡的计划,许多语义错误不会很容易找到目测的代码。
幸运的是,这就是一个调试器能真正派上用场。
调试器
调试器是一个计算机程序,它允许程序员控制程序如何执行,并看着它运行会发生什么。例如,程序员可以使用调试器,由线到执行程序行,考察沿途变量的值。通过对变量的实际值进行比较,以期望是什么,或通过代码看执行的路径,调试器可以帮助极大追捕语义错误。
早期的调试器,如GDB,有命令行界面,在这里程序员必须键入神秘的命令,以使他们的工作。后来调试器(比如Borland的Turbo调试器)带着自己的“图形”前端,使他们的工作更容易。几乎所有的现代集成开发环境可这些天都集成调试器 - 也就是,调试器是内置的编辑器,这样你就可以调试使用,你用它来编写代码(而不需要切换程序),在相同的环境。
几乎所有的现代调试器包含相同的组标准的基本特征 - 然而,存在如何菜单来访问这些功能被布置,甚至更少的一致性的键盘快捷键而言小的一致性。虽然我们的例子是微软的Visual Studio 2005 Express,则应该不会有大问题搞清楚如何访问每一个我们讨论无论哪个开发环境中使用的功能。
在开始之前:请确保您的程序设置为使用调试生成配置。
步进
步进是一个调试器功能,它允许您执行(步),按行代码行。这可以让你检查隔离的每一行代码,以确定它是否表现为意。
实际上有3种不同的步进命令:步入,跳过和步出。我们将涵盖每一个都需要。
步入
1
2
3
4
5
6
7
8
9
10
11
12
#include <iostream>
void printValue(int nValue)
{
std::cout << nValue;
}
int main()
{
printValue(5);
return 0;
}
如你所知,在运行程序时,执行与呼叫开始的main()。因为我们要内部调试的main(),让我们开始使用“步入”命令。
在Visual Studio 2005 Express中,进入调试菜单,选择“单步执行”,或按F11。
如果您使用的是不同的IDE,发现在菜单中的“单步执行”命令,然后选择它。
执行此操作时,两件事情应该发生。首先,因为我们的应用程序是一个控制台程序,控制台输出窗口应该打开。这将是空的,因为我们没有输出任何东西。其次,你应该看到某种标记的出现主要左括号的左侧。在Visual Studio 2005 Express中,这个标记是一个黄色箭头。如果您使用的是不同的IDE,你应该看到的东西,有异曲同工之妙。