• Thứ Ba, 23/09/2008 09:10 (GMT+7)

    Debug project ATL COM

    Câu hỏi :
    Lập trình C++ tạo Project1 (ATL COM) sau đó build ra file .dll, Project2 (ATL COM) reference tới DLL của project trước và cũng build ra dạng DLL, cuối cùng Project3 C# (Application) sử dụng các DLL trên. Hiện tại mỗi khi cập nhật Project1 hoặc Project2, tôi phải build và dùng Project3 để kiểm tra lại, như thế rất mất thời gian mà đôi khi không tìm thấy lỗi. Vậy có cách nào debug trực tiếp Project1 hoặc 2 không? 
     

    Trả lời :

    Loại project "ATL COM" trong môi trường thiết kế phần mềm trực quan "Visual C++" cho phép xây dựng các linh kiện phần mềm COM (Component Object Model). Mỗi linh kiện COM là 1 đối tượng được truy xuất ở cấp hệ thống, nghĩa là nếu nó được cài đặt và đăng ký vào Windows của máy nào thì các phần mềm ứng dụng trên máy đó sẽ gọi được các dịch vụ của COM, bất luận ứng dụng được viết bằng ngôn ngữ gì. Bạn có thể coi COM như một thư viện cổ điển, nó chứa nhiều hàm chức năng mà ứng dụng có thể gọi khi cần. Vì COM chỉ là 1 linh kiện (thư viện các hàm) chứ không phải là 1 ứng dụng hoàn chỉnh, nên COM không có điểm nhập để được kích hoạt chạy độc lập, vậy về nguyên tắc, ta không debug trực tiếp nó được.

     Tuy nhiên nhu cầu debug để xác định lỗi trong các hàm chức năng trong COM để sửa chữa lại cho đúng luôn là nhu cầu thiết yếu. Visual C++ cho phép debug COM gián tiếp thông qua ứng dụng sử dụng COM. Thí dụ bạn có 3 project:

     - Project 1 tạo COM (ta gọi tổng quát là COM1), ta không thể debug trực tiếp COM1 ngay vì nó không thể chạy trực tiếp được.

     - Project 2 tạo COM (ta gọi là COM2) sử dụng COM1, ta không thể debug trực tiếp COM2 (và COM1) ngay vì nó không thể chạy trực tiếp được.

     - Project 3 tạo 1 ứng dụng dùng COM2 (COM2 có dùng COM1). Về nguyên tắc ta có thể debug được các đoạn code trong Project3 bằng cách dùng trình debug điều khiển chạy ứng dụng từng lệnh từ lệnh đầu tiên của ứng dụng.

     Visual C++ cũng cho phép ta debug luôn các đoạn code trong Project 2 (và Project 1) trong lúc debug ứng dụng trong Project 3. Muốn vậy, bạn hãy chạy trình Visual C++, mở Project 3, chọn menu Tools.Options để hiển thị cửa sổ Options. Sau đó chọn tab Debug, đánh dấu chọn vào checkbox Just-in-time debugging và OLE RPC debugging. Từ đây trong quá trình debug ứng dụng, mỗi lần bạn gặp lệnh gọi hàm trong COM2 hay COM1, bạn ấn phím F11 (hay menu Debug.Step Into), bạn sẽ thấy trình debug cho phép bạn dừng lại từng lệnh trong hàm tương ứng của COM1 hay COM2 để bạn khảo sát và đánh giá từng lệnh này.
     

    Chuyên mục: Lập trình