调试 C/C++ 项目教程
撰稿及维护人:Ann Rice
2008 年 9 月 [修订版本号:V6.5-1]
下面的简明教程将介绍 NetBeans IDE 6.5 中用于调试 C 或 C++ 项目的一些功能。
目录
要求
要学习本教程,您需要具备以下软件和资源。
| NetBeans IDE |
带有 NetBeans C/C++ 包的版本 6.5 |
| Java Developer Kit (JDK) |
版本 6 或版本 5 |
Windows 平台:
GNU C 和 C++ 编译器、make、gdb
|
www.cygwin.com
www.mingw.org
|
Solaris 平台:
GNU C 和 C++ 编译器
Sun C 和 C++ 编译器
Solaris make 和 gmake
gdb
|
3.4.3
5.9(Sun Studio 12 发行版)
3.80
6.6 或 6.8
|
Linux 平台:
Red Hat Fedora Core:
gcc 和 g++
gdb
GNU Make
Ubuntu:
gcc 和 g++
gdb
GNU Make
|
4.1.2
6.6 或 6.8
3.81
4.1.2
6.6 或 6.8
3.81
|
Mac OS X 平台:
gcc 和 g++
gdb
GNU Make
Xcode 包 |
4.0.1
6.3.50
3.80
6.5
|
有关下载和安装必需软件的信息,请参见 NetBeans IDE 6.5 安装指南和安装和配置 C/C++ 支持。
创建样例项目
NetBeans C/C++ Pack 6.5 使用 gdb 调试器,为调试项目提供了众多功能。为了说明这些功能,我们将以“报价”项目为例进行讲解。如果还没有创建这个项目,可执行以下操作:
- 选择“文件”>“新建项目”。
- 在项目向导中,依次展开“样例”类别和 "C/C++" 子类别。
- 选择“应用程序”子类别,然后选择“报价”项目。单击“下一步”,然后单击“完成”。
您可以随时在代码中创建并操作断点,而不用启动调试会话。
创建和删除行断点
-
在 Quote_1 项目中,打开 quote.cc 文件。
- 单击源代码编辑器窗口左边靠近 173 行的空白区域,设置一个行断点 (response = readChar("Enter disk module type: (S for single disks, R for RAID; Q - exit)", 'S');)。该行将以红色突出显示,表明断点已设置。
- 您可以通过单击位于左边空白区域的图标来删除断点。
- 选择“窗口”>“调试”>“断点”打开“断点”窗口。行断点将在窗口中列出。
创建函数断点
- 选择“调试”>“新建断点”(Ctrl+Shift+f8) 打开“新建断点”对话框。
-
在“断点类型”下拉列表中,将类型设置为“函数”。
- 在“函数名”文本字段中键入函数名 Customer::GetDiscount。单击“确定”。
- 函数断点已设置,并且已添加到“断点”窗口列表中。
启动调试会话
在启动调试会话时,IDE 会启动 gdb 调试器,然后在调试器中运行应用程序。IDE 将自动打开调试器窗口,并在“输出”窗口中打印调试器输出。
- 右键单击项目节点并选择“调试”,启动 Quote_1 项目的调试会话。此时调试器将启动,应用程序也将运行,并且“局部变量”、“监视”和“调用栈”窗口都将打开。
- 选择“窗口”>“调试”>“会话”来打开“会话”窗口。调试会话将显示在此窗口中。
检查应用程序状态
- Quote_1 应用程序会提示您在外部 I/O 窗口中输入信息。
- 在提示“输入客户名:”后输入客户名。
- 应用程序在您先前设置的函数断点处停止。选择“窗口”>“调试”>“断点”来打开“断点”窗口。此时该窗口会列出之前设置的两个断点。函数断点以粗体显示。
- 单击“调用栈”标签。此时调用栈将显示三个框架。
- 单击“局部变量”标签,注意会显示一个变量。单击展开图标(带加号的小框),展开结构。
- 单击“继续”按钮。此时将执行 GetDiscount 函数,同时在外部 I/O 窗口中显示客户折扣。此时系统会提示输入信息。
- 按照提示输入信息。程序会在下一个断点(即先前设置的行断点)处停止。在 quote.cc 文件中,断点图标顶端会出现绿色程序计数器箭头,指示程序暂停在哪一行。
-
单击“局部变量”标签,注意局部变量的长列表。
- 单击“调用栈”标签,注意此时栈中有一个框架。
- 选择“窗口”>“调试”>“线程”。此时将打开“线程”窗口,显示两个线程。当前线程以粗体显示。
- 选择“窗口”>“调试”>“注册”。此时将打开“注册”窗口,其中显示注册的当前内容。
- 选择“窗口”>“调试”>“反汇编”。此时将打开“反汇编”窗口,其中显示当前源文件的汇编指令。
-
单击“继续”按钮,继续按提示在外部 I/O 窗口中输入信息,直到程序结束。当输入 Q 退出程序时,外部 I/O 窗口将关闭,并且调试会话将结束。如果要在程序执行完毕以前终止调试会话,可以在“会话”标签中右键单击该会话,选择“完成”,或者选择“调试”>“完成调试器会话”。