Phát triển các ứng dụng bằng cách sử dụng Bộ công cụ phát triển C/C++ của Eclipse

Tạo một ứng dụng C++ sử dụng Thư viện khuôn mẫu chuẩn và CDT

Khi hầu hết mọi người nghĩ tới "Eclipse", họ đều nghĩ rằng đó là "Môi trường phát triển tích hợp cho Java™ (Java IDE)." Eclipse có nhiều hơn thế. Với các trình cắm thêm thích hợp, người ta có thể sử dụng Eclipse để làm việc với PHP, Ruby và Groovy, C và C++. Trong bài này, bạn bắt đầu với Bộ công cụ phát triển C/C++ của Eclipse (CDT - Eclipse C/C++ Development Toolkit). Chúng ta xây dựng một ứng dụng đơn giản trong C++, sử dụng CDT và Thư viện khuôn mẫu chuẩn C++ (STL - C++ Standard Template Library) để tổ chức tốt hơn quá trình và tận dụng lợi thế của một số các tính năng mạnh của C++.

Michael Galpin, Kiến trúc sư phần mềm, Ludi Labs

Michael Galpin đã phát triển phần mềm Java một cách chuyên nghiệp từ năm 1998. Ông hiện đang làm việc cho eBay. Ông đã có bằng về toán học của Viện Công nghệ California.



08 01 2010

Bài viết này, tiếp theo bài "Phát triển C/C++ với Nền tảng Eclipse ((C/C++ development with the Eclipse Platform), dành cho các nhà phát triển C++ những người muốn học cách phát triển C++ bằng cách sử dụng Eclipse CDT. Một ứng dụng C++ đơn giản được phát triển trong bài viết này. Ứng dụng này sử dụng STL C++. Độc giả cần quen thuộc với STL, cũng như với các nguyên tắc lập trình hướng đối tượng cơ bản như sự thừa kế và đa hình. Hiểu rõ về Eclipse sẽ rất có ích, nhưng không bắt buộc.

Trước khi chúng ta bắt đầu

Bạn cần phải cài đặt các phần mềm sau:

Eclipse
Chúng ta sẽ sử dụng CDT, đây là một trình cắm thêm cho Eclipse, do đó, tất nhiên bạn cần có Eclipse. Bài này sử dụng Eclipse V3.2.
Môi trường thời gian chạy Java (JRE-Java Runtime Environment)
Chúng ta sắp xây dựng một ứng dụng C++, nhưng chúng ta đang sử dụng Eclipse. Eclipse tự nó là một ứng dụng Java, vì vậy nó cần một JRE. Bài này sử dụng Eclipse V3.2, đòi hỏi một phiên bản JRE V1.4 hoặc cao hơn. Nếu bạn cũng muốn sử dụng Eclipse cho việc phát triển Java, bạn sẽ cần một JDK.
Bộ công cụ phát triển C/C++ (CDT) của Eclipse (Eclipse C/C++ Development Toolkit - CDT)
Đây là bài viết về CDT, vì vậy bạn sẽ cần đến nó, tất nhiên là thế. Hãy đọc một bài viết của developerWorks vào năm 2003 có tiêu đề "Phát triển C/C++ với Nền tảng Eclipse." về các hướng dẫn cài đặt CDT trong các phiên bản sớm hơn của Eclipse.
Cygwin
Nếu bạn đang sử dụng Microsoft Windows®, bạn sẽ thấy Cygwin — nó cung cấp một môi trường giống như Linux® trên Windows — có ích đấy.
Các công cụ phát triển C/C++ của GNU (GNU C/C++ Development Tools)
CDT sử dụng các công cụ GNU C/C++ tiêu chuẩn để biên dịch mã của bạn, xây dựng dự án của bạn và gỡ rối các ứng dụng. Các công cụ này là Bộ trình biên dịch của GNU (GCC - GNU Compiler Collection) cho C++ (hay g++), tiện ích make, và Trình gỡ rối dự án GNU (GDB- GNU Project Debugger). Nếu bạn là một lập trình viên sử dụng Linux hay Mac OS X, thì có nhiều khả năng là các công cụ này đã được cài đặt trên máy tính của bạn. Bài viết này có các chỉ dẫn để cài đặt các công cụ này cho Windows.

Eclipse CDT

Eclipse CDT là một trình cắm thêm vào Eclipse, biến Eclipse thành một C/C++ IDE mạnh. Nó được thiết kế để mang lại nhiều tính năng tuyệt vời, nhờ các nhà phát triển Java mà Eclipse có được các tính năng tuyệt đó cho các nhà phát triển C/C++, chẳng hạn như quản lý dự án, gỡ rối tích hợp, các trình thủ thuật lớp, việc xây dựng được tự động hóa, tô màu theo cú pháp và tự hoàn tất mã lệnh. Khi Eclipse được sử dụng như một Java IDE, nó sử dụng và tích hợp với JDK. Tương tự như thế, CDT sử dụng và tích hợp với các công cụ C/C++ tiêu chuẩn, như g++, tiện ích make, và GDB. Điều này đã làm cho nó trở nên rất phổ biến trên Linux, ở đó các công cụ này đã có sẵn và được sử dụng cho hầu hết việc phát triển C++. CDT có thể được cài đặt trên Windows để sử dụng cùng các công cụ đó. Cũng đang có một nỗ lực để làm cho CDT làm việc với các công cụ C++ của Microsoft, làm cho nó thậm chí hấp dẫn hơn cho các nhà phát triển C++ trên Windows.


Cài đặt CDT

Chúng tôi bắt đầu với giả định là bạn đã cài đặt Eclipse và có thể chạy nó. Nếu không, hãy tham khảo trang web của Eclipse để cài đặt và chạy. Ta hãy cài đặt CDT. CDT là một trình cắm thêm cho Eclipse, do đó, nó sử dụng tính năng Cập nhật phần mềm của Eclipse (Eclipse's Software Updates). Chọn Help > Software Updates > Find and Install.

Hình 1. Cập nhật phần mềm Eclipse
Cập nhật phần mềm Eclipse

Tiếp theo, bạn sẽ muốn chọn Search để tìm các tính năng mới để cài đặt.

Hình 2. Tìm kiếm các tính năng mới
Tìm kiếm các tính năng mới

Nếu bạn đang sử dụng một phiên bản mới hơn của Eclipse, nên có các trang khám phá Callisto hoặc Europa. (Chú ý của biên tập viên: Do bài này đã được viết vào tháng 4 năm 2007, bản phát hành Europa còn đang ở giai đoạn lập kế hoạch. Tuy nhiên, việc cài đặt bản Europa được dự kiến tương tự như Callisto.) Chỉ cần chọn nó và nhấn vào Finish.

Hình 3. Trang Web khám phá Callisto
Trang Web khám phá Callisto

Eclipse có thể yêu cầu bạn chọn trong một danh sách các trang Web nhân bản để đi đến Trang khám phá Callisto (Discovery Callisto Site). Chọn bất kỳ một trang nào có vẻ gần bạn nhất. Bạn sẽ thấy một danh sách các trình cắm thêm từ Trang khám phá Callisto. Bạn sẽ muốn chọn C and C++ Development (Phát triển C và C++) và nhấn Next.

Hình 4. Các trình cắm thêm Callisto có sẵn
Available Callisto plugins

Hình 4. Các trình cắm thêm Callisto có sẵn Next. Bạn sẽ thấy một bản tóm tắt những gì sẽ được tải về và cài đặt. Đơn giản là nhấn vào Finish.

Hình 5. Bản tóm tắt tải về và cài đặt
Bản tóm tắt tải về và cài đặt

Trình quản lý cập nhật (Update Manager) của Eclipse sau đó sẽ tải về trình cắm thêm CDT từ máy chủ Web nhân bản mà bạn đã chọn trước đó. CDT có tổng dung lượng khoảng 11 MB, do đó, có thể mất vài phút để tải về, tùy thuộc vào tốc độ kết nối Internet của bạn. Sau khi mọi thứ được tải về, bạn sẽ được yêu cầu xác nhận rằng bạn muốn cài đặt các tính năng mới. Nhấn vào Install All (Cài đặt tất cả).

Hình 6. Xác nhận cài đặt
Xác nhận cài đặt

Sau khi kết thúc việc cài đặt CDT, bạn sẽ được yêu cầu khởi động lại Eclipse. Hãy tiếp tục và khởi động lại. Sau khi khởi động lại Eclipse, CDT sẽ sẵn sàng hoạt động.


Cấu hình Windows

Nếu bạn đang chạy Eclipse trên Linux hoặc Mac OS X, bạn đã sẵn sàng bắt đầu sử dụng CDT để phát triển một ứng dụng C++. Nếu bạn đang trong Windows, có thể cần thêm một vài bước nữa. Như đã đề cập, CDT dựa trên các công cụ phát triển GNU C++ chuẩn: g++, make, và GDB. Các công cụ phát triển này thường có trên Linux hoặc Mac OS X. Chúng thường không có trên Windows. Nhưng đừng lo. Các công cụ này có thể dễ dàng được cài đặt trên Windows. Có lẽ cách dễ nhất là cài đặt Cygwin. Cygwin cung cấp môi trường giống như Linux trên Windows (xem Tài nguyên). Khi cài đặt Cygwin, bạn sẽ được yêu cầu chọn những gói bạn muốn cài đặt. Hãy chắc chắn rằng đã đi tới phần phát triển và chọn gcc: g++, make, và GDB. Điều này cũng sẽ làm cho các thứ cần có trước của chúng được cài đặt.

Một khi bạn đã hoàn thành việc cài đặt Cygwin, bạn sẽ cần phải thêm g++, make, và GDB vào đường dẫn của bạn. Cách dễ nhất để làm điều này là thêm thư mục bin của Cygwin vào đường dẫn của bạn, vì đó là nơi có thể tìm thấy g++, make, và GDB. Khi đã làm xong, khởi động lại Eclipse.


Chơi xổ số

Tại thời điểm này, chúng ta đã sẵn sàng để bắt đầu phát triển các ứng dụng của chúng ta với CDT. Chúng ta hãy tạm dừng lại để nêu ra chúng ta muốn phát triển những gì. Ứng dụng mẫu là một chương trình dòng lệnh đơn giản để sinh ra các xổ số. Có nhiều bang có xổ số và các quy tắc khá khác nhau. Chúng ta sẽ cho phép người dùng lựa chọn họ muốn tạo ra xổ số của bang nào. Điều này sẽ cung cấp cho chúng ta một cách thích hợp để sử dụng sự hỗ trợ hành vi đa hình của C++.


Tạo dự án

Eclipse sử dụng các khái niệm các phối cảnh để cho phép nhiều trình cắm thêm tuỳ chỉnh các lệnh và các khung nhìn của chúng. Eclipse khởi đầu theo mặc định trong phối cảnh Java. CDT bao gồm phối cảnh riêng của nó, vì vậy chúng ta sẽ muốn chuyển sang đó. Để làm điều này, hãy chọn Window > Open Perspective > Other. Bạn sẽ thấy một danh sách các phối cảnh có sẵn cho bạn. Chọn phối cảnh C/C++ và nhấn OK.

Hình 7. Chọn phối cảnh C/C++
Chọn phối cảnh C/C++

Bây giờ Eclipse trông giống như Hình 8.

Hình 8. Phối cảnh C/C++
Phối cảnh C/C++

Eclipse tổ chức mã của bạn thành các dự án, do đó, chúng ta sẽ muốn tạo một dự án mới. Chọn File > New > Managed Make C++ Project.

Hình 9. Dự án C++ mới
Dự án C++ mới

Bạn có thể đã thấy có một vài tùy chọn khác nhau cho dự án. Chúng ta muốn có một dự án C++. Chúng ta chọn "Managed Make" (tiện ích Make được quản lý), bởi vì điều này sẽ cho phép Eclipse tạo ra các tệp make cho chúng ta. Bạn có thể chọn một hương vị "Standard Make" (Make tiêu chuẩn) và viết tệp make riêng của bạn. Bây giờ, chúng ta đang ở trong Trình thủ thuật New Project, ở đây ta sẽ đặt tên dự án của mình là Lottery (Xổ số) và nhấn vào Finish.

Thao tác này sẽ tạo ra một dự án rỗng, bạn sẽ thấy dự án này trong cửa sổ C/C++ Projects (Các dự án C/C++). Nhấn chuột phải vào dự án đó và chọn New > Source Folder. Điều này sẽ làm xuất hiện một trình thủ thuật "New Source Folder" (Thư mục Nguồn mới), ở đây chúng ta sẽ đặt tên thư mục của mình là src và nhấn Finish.


Chương trình xổ số cơ bản

Chúng ta đã sẵn sàng bắt đầu tạo ra một số mã. Chúng ta sẽ bắt đầu bằng việc tạo ra tệp chạy thi hành của ứng dụng của chúng ta. Nhấn chuột phải vào thư mục nguồn mà chúng ta vừa tạo và chọn New > Source File, như trong Hình 10.

Bây giờ, ta hãy tạo ra một phương thức main rỗng. Đây chỉ là cái giữ chỗ (placeholder); chúng ta sẽ thêm nhiều thứ vào đó sau khi đã tạo ra phần còn lại của dự án của mình.

int main()
{
     return 0;
}

Lưu dự án của bạn và Eclipse sẽ tự động thực hiện nó cho bạn. Bạn sẽ thấy một số kết quả trong bàn điều khiển báo hiệu rằng nó được biên dịch thành công.

Chúng ta đã sẵn sàng để tạo ra lớp đầu tiên của mình. Nhấn chuột phải vào thư mục mã nguồn mà chúng ta vừa tạo và chọn New > Class.

Hình 10. Lớp mới
Lớp mới

Việc này làm xuất hiện trình thủ thuật New Class (Lớp mới). Chúng ta sẽ gán cho lớp của mình một vùng tên là lotto, và chúng ta sẽ gọi lớp của mình là Lottery.

Hình 11. Lớp Lottery
Lớp Lottery

Eclipse sẽ tạo ra các gốc cho lớp của bạn. CDT làm được rất nhiều điều tốt đẹp cho bạn. Nó tạo ra các chỉ thị biên dịch thích hợp trong tệp tiêu đề (header file). Nó khuyến khích các cách thực hành tốt nhất bằng cách tạo ra riêng biệt tệp giao diện (Lottery.h) và tệp triển khai thực hiện (Lottery.cpp). Nó còn khuyến khích một cách thực hành tốt khác là để cho phương thức hủy (destructor) của lớp của bạn là ảo. Chúng ta có thể nhập mã nguồn cho các lớp này như trong Liệt kê 1 và 2.

Liệt kê 1. Lottery.h
#ifndef LOTTERY_H_
#define LOTTERY_H_
#include <string>
#include <sstream>
#include <cstdlib>
#include <time.h>
using namespace std;
namespace lotto
{

class Lottery
{
     protected:
          int ticketSize, maxNum;
          int* generateNumbers();
public:
     Lottery(int,int);
     virtual ~Lottery();
     virtual string printTicket();
};

}

#endif /*LOTTERY_H_*/

Liệt kê 2 cho thấy tệp triển khai thực hiện của lớp Lottery.

Liệt kê 2. Lottery.cpp
#include "Lottery.h"

namespace lotto
{

Lottery::Lottery(int size, int num)
{
     this->ticketSize = size;
     this->maxNum = num;
}

Lottery::~Lottery()
{
}

int* Lottery::generateNumbers()
{
     int* allNums = new int[this->maxNum +1];
     for (int i=0; i <= this->maxNum ; i++)
     {
          allNums[i] = 0;
     }
     int* nums = new int[this->ticketSize];
     for (int i=0; i < this->ticketSize; i++)
     {
          int val = 1 + rand() % (this->maxNum);
          if (allNums[val])
          {
               i--;
          }
          else 
          {
               nums[i] = val;
               allNums[val] =1;
          }
     }
     return nums;
}

string Lottery::printTicket()
{
     ostringstream str;
     int* nums = this->generateNumbers();
     for (int i=0;i< this->ticketSize; i++)
     {
          str << *nums << ' ';
          nums++;
     }
     return str.str();
}

}

Mã này đang làm gì? Vâng, lớp Lottery của chúng ta có hai thuộc tính. Thuộc tính ticketSize là số con số trên vé số. Thuộc tính maxNum là con số lớn nhất trên vé. Sau đây chúng ta sẽ sử dụng xổ số của bang Florida làm một ví dụ. Ở đó, bạn chọn sáu số từ 1 đến 53, do đó ticketSize sẽ là 6 và maxNum sẽ là 53.

Phương thức generateNumbers tạo ra một mảng các số tương ứng với các số trên một vé xổ số. Nó sử dụng hàm STL rand() để tạo các số ngẫu nhiên. Mảng allNums được sử dụng để theo dõi các số đã được tạo ra cho đến nay, do đó, chúng ta có thể chắc chắn rằng chúng ta không nhận được một số trùng lặp trên vé của mình. Cuối cùng, printTicket() tạo ra một chuỗi ký tự biểu diễn vé số của chúng ta.

Khi bạn lưu trữ các tệp này, Eclipse tự động xây dựng dự án của bạn. Một lần nữa, nếu bạn ghi lưu dự án này, nó sẽ được biên dịch và bạn sẽ thấy các thông báo biên dịch trong bàn điều khiển, như trong Liệt kê 3.

Liệt kê 3. Kết quả của trình biên dịch trong bàn điều khiển
**** Build of configuration Debug for project Lottery ****

make -k all 
Building file: ../src/Main.cpp
Invoking: GCC C++ Compiler
g++ -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/Main.d" -MT"src/Main.d" 
-o"src/Main.o" "../src/Main.cpp"
Finished building: ../src/Main.cpp
 
Building target: Lottery
Invoking: MacOS X C++ Linker
g++  -o "Lottery"  ./src/Lottery.o ./src/Main.o   
Finished building target: Lottery
 
Build complete for project Lottery

Lớp MegaLottery

Bạn có thể đã nhận thấy rằng chúng ta làm cho phương thức printTicket() là ảo khi nó được khai báo trong tệp tiêu đề. Điều đó sẽ cho phép chúng ta tạo lớp con của Lottery và ghi đè lên phương thức này. Chúng ta muốn làm điều đó bởi vì một số bang có một loại xổ số có một số "mega" (số hàng triệu). Đây là một số được quay riêng mà vé số bất kỳ phải khớp với số đó ngoài các số khác đã quay. Hãy tạo một lớp MegaLottery cho các bang này và nó sẽ là lớp con của Lottery.

Một lần nữa, nhấn chuột phải vào thư mục mã nguồn của chúng ta và chọn New > Class, như chúng ta đã làm trước đó. Lúc này trong trình thủ thuật New Class, chúng ta sẽ khai báo lớp mới của chúng ta trong cùng vùng tên, nhưng gọi nó là MegaLottery.

Hình 12. Lớp MegaLottery
Lớp MegaLottery

Để tạo lớp con của Lottery, chọn nút Add bên cạnh phần Base Classes (Các lớp Cơ sở). Hộp thoại Choose Base Class (Chọn lớp cơ sở) xuất hiện. Bạn có thể bắt đầu nhập tên của lớp cơ sở và Eclipse sẽ thu hẹp nhanh chóng danh sách của các ứng cử viên lớp cơ sở. Bạn sẽ muốn chọn Lottery và nhấn OK.

Hình 13. Chọn các lớp cơ sở
Chọn các lớp cơ sở

Chúng ta có thể nhập mã cho MegaLottery, như hiển thị trong Liệt kê 4 và 5.

Liệt kê 4. MegaLottery.h
#ifndef MEGALOTTERY_H_
#define MEGALOTTERY_H_

#include "Lottery.h"

using std::string;

namespace lotto
{

class MegaLottery : public lotto::Lottery
{
     protected:
          int maxMegaNum;
public:
     MegaLottery(int,int,int);
     virtual ~MegaLottery();
     string printTicket();
};

}

#endif /*MEGALOTTERY_H_*/

Liệt kê 5 hiển thị tệp triển khai thực hiện của lớp MegaLottery MegaLottery.

Liệt kê 5. MegaLottery.cpp
#include "MegaLottery.h"

using namespace std;

namespace lotto
{

MegaLottery::MegaLottery(int ticketSize, int maxNum, int maxMegaNum) : 
    Lottery(ticketSize,maxNum)
{
     this->maxMegaNum = maxMegaNum;
}

MegaLottery::~MegaLottery()
{
}

string MegaLottery::printTicket()
{
     ostringstream tick;
     tick << Lottery::printTicket() << " Mega: ";
     int mega = 1 + rand() % this->maxMegaNum;
     tick << mega;
     return tick.str();
}

}

Sự khác biệt chính giữa LotteryMegaLotteryMegaLottery có một thuộc tính bổ sung thêm maxMegaNum. Đây là giá trị tối đa mà số mega có thể nhận. Nó sẽ ghi đè phương thức printTicket(). Nó sử dụng lớp cơ sở để tạo ra phần đầu tiên của vé số, sau đó nó tạo ra số mega và gắn thêm nó vào chuỗi ký tự biểu diễn vé số.

Chúng ta cần một cách để tạo ra các loại xổ số khác nhau. Chúng ta sẽ sử dụng một lớp Factory Pattern (Mẫu nhà máy) để làm việc này. Chúng ta sẽ làm điều này bằng cách thêm một lớp LotteryFactory. Chúng ta muốn tất cả Lotteries đều đến từ cùng một nhà máy, do đó, chúng ta sẽ làm cho LotteryFactory là cá thể duy nhất (singleton). Mã cho nó có trong Liệt kê 6 và 7.

Liệt kê 6. #ifndef LOTTERYFACTORY_H_
#define LOTTERYFACTORY_H_

#include "Lottery.h"

namespace lotto
{

class LotteryFactory
{
    
public:
    enum State { California, Florida };
    static LotteryFactory* getInstance();
    Lottery* getLottery(State);
private:    
    LotteryFactory();
};

}

#endif /*LOTTERYFACTORY_H_*/

Liệt kê 7 cho thấy tệp triển khai thực hiện lớp LotteryFactory.

Liệt kê 7. LotteryFactory.cpp
#include "LotteryFactory.h"
#include "MegaLottery.h"

namespace lotto
{

LotteryFactory::LotteryFactory()
{
    srand(time(NULL));
}

Lottery* LotteryFactory::getLottery(State s)
{
    if (s == LotteryFactory::California)
    {
        Lottery* lotto = new MegaLottery(5,47,27);
        return lotto;
    }
    else 
    {
        Lottery* lotto = new Lottery(6,53);
        return lotto;
    }
}

LotteryFactory* LotteryFactory::getInstance()
{
    static LotteryFactory instance;
    return &instance;
}

}

LotteryFactory này có một bảng kê (enum) các kiểu xổ số khác nhau. Chúng ta đã chỉ đưa vào Florida và California trong ví dụ này, nhưng sẽ không khó khăn gì để đưa thêm vào bao nhiêu tùy ý bạn. Hàm tạo (constructor) của LotteryFactory tạo mầm hàm rand() mà các lớp lottery của chúng ta sử dụng. Chúng ta chỉ cần thực hiện phương thức main có thể chạy được của chúng ta.

Liệt kê 8. Main.cpp
#include <iostream>
#include "LotteryFactory.h"

using namespace lotto;
int main()
{
    LotteryFactory* factory = LotteryFactory::getInstance();
    cout << "What lottery do you want to play?" << endl;
    cout << "(1) California, (2) Florida" << endl;
    int cmd;
    scanf("%d", &cmd);
    Lottery* lotto = 0;
    switch (cmd)
    {
        case 1 :
        lotto = factory->getLottery(LotteryFactory::California);
        break;
        
        case 2 :
        lotto = factory->getLottery(LotteryFactory::Florida);
        break;
        
        default :
        cout << "Sorry didn't understand that" << endl;
    }
    cout << "Ticket: " << lotto->printTicket() << endl;
    delete lotto;
    return 0;
}

Chạy chương trình

Chúng ta đã sẵn sàng để chạy chương trình của mình. Chọn Run > Run.

Hình 14. Chọn các lớp cơ sở
Chọn các lớp cơ sở

Chọn C/C++ Local Application (Ứng dụng cục bộ C/C++) và nhấn vào nút New.

Hình 15. Lược thảo chạy C/C++ mới
Lược thảo chạy C/C++ mới

Thao tác này sẽ làm xuất hiện giao diện Create run configuration (Tạo cấu hình chạy) cho dự án Lottery. Bạn sẽ cần phải lựa chọn thực hiện nó bằng cách nhấn vào nút Search Project (Tìm kiếm dự án).

Hình 16. Tìm kiếm dự án để thực hiện
Tìm kiếm dự án để thực hiện

Bạn có thể chọn tệp nhị phân mà Eclipse đã tạo cho bạn và nhấn OK.

Hình 17. Tìm kiếm dự án để thực hiện
Tìm kiếm dự án để thực hiện

Chỉ cần nhấn vào Run (Chạy) và chương trình sẽ chạy trong bàn điều khiển của bạn. Đoạn mã dưới đây cho thấy một số ví dụ kết quả đầu ra.

What lottery do you want to play?
(1) California, (2) Florida
2
Ticket: 12 28 24 15 35 22

Gỡ rối chương trình

Chương trình của chúng ta sẽ chạy tốt, nhưng chúng ta hãy xem xét việc gỡ rối ứng dụng. Đầu tiên, tạo một điểm dừng (breakpoint) trong mã của chúng ta. Chọn một dòng và nhấn chuột phải bên cạnh nó và chọn Toggle Breakpoint (Bật/tắt điểm dừng).

Hình 18. Tạo điểm dừng
Tạo điểm dừng

Chúng ta cần phải tạo một cấu hình gỡ rối, phần lớn giống như chúng ta đã tạo một cấu hình chạy. Chọn Run > Debug.

Hình 19. Tạo cấu hình gỡ rối
Tạo cấu hình gỡ rối

Thao tác này sẽ làm xuất hiện Debug configuration (Cấu hình gỡ rối). Việc này dựa trên cấu hình Run và bạn sẽ không cần phải thay đổi bất cứ điều gì. Chỉ cần nhấn Debug.

Hình 20. Cấu hình Debug
Cấu hình Debug

Sau khi trình gỡ rối khởi chạy, nó sẽ nhắc bạn chuyển sang phối cảnh Debugger (Trình gỡ rối). Hãy làm như vậy. Lưu ý là trong cấu hình này chúng ta thiết lập để dừng tự động lúc khởi động phương thức main của chúng ta. Do đó, trình gỡ lỗi sẽ dừng ngay lập tức và bạn sẽ thấy một màn hình giống Hình 21.

Hình 21. Trình gỡ rối
Trình gỡ rối

Tóm tắt

Chúng ta đã xây dựng và đã gỡ rối ứng dụng xổ số của chúng ta. Bạn có thể dễ dàng thêm nhiều chương trình xổ số cho nó. Một số trong chúng có thể liên quan đến các lớp con bổ sung thêm. CDT làm cho nó dễ dàng hơn bao giờ hết khi tạo ra các lớp này và các hệ thống phân cấp lớp và chạy và gỡ rối ứng dụng nhằm thử nghiệm nó.

Tài nguyên

Học tập

Lấy sản phẩm và công nghệ

  • Tìm hiểu về các công cụ MinGW, GNU C /C++ cho Windows kèm theo với Cygwin.
  • Tải về Cygwin một môi trường giống như Linux cho Windows. Nó bao gồm hai phần: Một DLL hoạt động như một tầng mô phỏng Linux API cung cấp chức năng Linux API quan trọng và một bộ sưu tập các công cụ mang lại dáng vẻ và cảm nhận của Linux.
  • Thông tin tải Bộ công cụ phát triển Eclipse C/C++ (CDT) có nhiều thông tin mới nhất về các phiên bản CDT có sẵn.
  • Xem các bản tải về công nghệ Eclipse mới nhất ở alphaWorks của IBM.
  • Tải về các phiên bản đánh giá sản phẩm của IBM, và thực hành các các công cụ phát triển ứng dụng của bạn và các sản phẩm phần mềm trung gian từ DB2®, Lotus®, Rational®, Tivoli®, và WebSphere®.
  • Đổi mới dự án phát triển nguồn mở tiếp theo của của bạn với phần mềm dùng thử của IBM, có sẵn để tải xuống hoặc trên đĩa DVD.

Thảo luận

  • Doug Schaefer là nhà phát triển hàng đầu về CDT. Đọc Doug trên Eclipse CDT để có các tin tức mới nhất về CDT.
  • Các nhóm tin Eclipse Platform là nơi dừng chân đầu tiên của bạn để thảo luận các câu hỏi về Eclipse. (Chọn lựa này sẽ khởi chạy ứng dụng trình đọc tin Usenet mặc định của bạn và mở eclipse.platform.)
  • Các nhóm tin Eclipse có nhiều tài nguyên cho những người quan tâm đến việc sử dụng và mở rộng Eclipse.
  • Tham gia vào các blog developerWorks và dành hết tâm trí cho cộng đồng developerWorks.

Bình luận

developerWorks: Đăng nhập

Các trường được đánh dấu hoa thị là bắt buộc (*).


Bạn cần một ID của IBM?
Bạn quên định danh?


Bạn quên mật khẩu?
Đổi mật khẩu

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Khi bạn đăng ký với trang developerWorks lần đầu tiên, một tiểu sử của của bạn được tạo ra. Chọn các thông tin về tiểu sử của bạn (tên, nước/vùng, và nơi làm việc) đã được hiện lên màn hình, thông tin này sẽ được hiện kèm với nội dung mà bạn đăng tải. Bạn có thể cập nhật thông tin này bất kỳ lúc nào.

Thông tin gửi đi được đảm bảo an toàn.

Chọn tên hiển thị của bạn



Lần đầu tiên bạn đăng nhập vào trang developerWorks, một bản trích ngang được tạo ra cho bạn, bạn cần phải chọn một tên để hiển thị. Tên hiển thị của bạn sẽ đi kèm theo các nội dung mà bạn đăng tải trên developerWorks.

Tên hiển thị cần có từ 3 đến 30 ký tự. Tên xuất hiện của bạn phải là duy nhất trên trang Cộng đồng developerWorks và vì lí do an ninh nó không phải là địa chỉ email của bạn.

Các trường được đánh dấu hoa thị là bắt buộc (*).

(Tên hiển thị cần có từ 3 đến 30 ký tự)

Bằng việc nhấn Gửi, bạn đã đồng ý với các điều khoản sử dụng developerWorks Điều khoản sử dụng.

 


Thông tin gửi đi được đảm bảo an toàn.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=70
Zone=Nguồn mở
ArticleID=459866
ArticleTitle=Phát triển các ứng dụng bằng cách sử dụng Bộ công cụ phát triển C/C++ của Eclipse
publish-date=01082010