Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Cách Debug ATL DLL Project như thế nào?

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    6

    Mặc định Cách Debug ATL DLL Project như thế nào?

    Xin chào tất cả các thành viên !

    Hôm nay ngày đầu tiên gia nhập diễn đàn mong rằng sẽ được mọi người giúp đỡ về lập trình C++.

    Mình có một câu hỏi rất cần xin mọi người chỉ giúp :
    + Mình viết một Project1(ATL COM) sau đó BUILD ra DLL. Một Project2(ATL COM) khác Xử lý và cũng refrence tới DLL của project trước và cũng BUILD ra dạng DLL. Cuối cùng có một Project3 C#(Application) sử dụng các DLL trên . Hiện tại mỗi khi mình Update Project1 hoặc Project2 thì mình lại buil và dùng Project3 để check lại . Như thế rất mất thời gian mà đôi khi không tìm thấy lỗi, vậy mình xin hỏi có cách nào Debug trực tiếp Project1 hoặc 2 không ?. Xin mọi người hãy chỉ dẫn.

  2. #2
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Không thể debug được trong dll hay COM. Bạn phải chấp nhận điều đó, thậm chí nhiều cái bực mình hơn nhiều ví dụ như nhiều khi không thể build lại được Project1, 2 mà phải tắt đi bật lại mới build lại được
    Mà hình như đây là bài viết đầu tiên trong diễn đàn có đề cập đến ATL COM thì phải

    P/S: Hi vọng không phải bạn gia nhập diễn đàn chỉ để nhận được sự giúp đỡ, cũng vì nhiều người nghĩ vậy nên dạo này diễn đàn cũng vắng vẻ, người giúp đỡ cũng chán và người muốn nhận được sự giúp đỡ cũng chán vì chả nhận được
    Đã được chỉnh sửa lần cuối bởi vinhie47 : 19-05-2007 lúc 02:06 PM.

  3. #3
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    Trích dẫn Nguyên bản được gửi bởi vinhie47 Xem bài viết
    Không thể debug được trong dll hay COM
    Thực ra là khó debug hơn như không phải là không thể
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 19-05-2007 lúc 03:15 PM.

  4. #4
    Ngày gia nhập
    07 2006
    Bài viết
    166

    Mình chỉ biết debug dll theo kiểu đặt đường dẫn đến file .exe ở phần Command của project tạo ra dll đó chứ chưa từng biết cách nào để debug từng dòng trong dll cả. Bạn nguyentuan2 có thể nói chút kĩ thuật debug đó được không
    Đã được chỉnh sửa lần cuối bởi vinhie47 : 19-05-2007 lúc 05:34 PM.

  5. #5
    Ngày gia nhập
    08 2006
    Nơi ở
    TpHCM
    Bài viết
    202

    Bình thường khi debug 1 project exe, ta có thể ấn F10 hoặc F11 để bắt đầu, hoặc đặt breakpoint trước rồi ấn F5
    Nhưng đối với project dll, do nó không có entry point, nên mọi cách debug đều phải là đặt breakpoint tại vị trí mong muốn trước khi bắt đầu debug

    Theo mình biết thì có 3 cách:
    1 - Trong project dll, đặt command debug là đường dẫn đến file exe sau đó bắt đầu debug (nhớ là phải đặt breakpoint trước, nếu không nó sẽ chạy tuốt tuồn tuột), cách này như vinhie47 đã nói ở trên
    2 - Cách này là tốt nhất, ta phải tạo 1 workspace chứa cả project dll và project exe hoặc project nào đó mà nó load project dll lên, setactive cho project exe hoặc 1 prj thực thi nào đó.
    Lúc đó ta debug bình thường như thể code của project dll nằm trong project exe vậy
    3 - Cách debug này áp dụng cho mọi thứ miễn là được build bởi VC, bất kể dạng project gì. Sử dụng phát biểu
    Code:
    asm int 3;
    tại vị trí nào mà ta muốn VXL ngừng lại, lúc đó ct sẽ bật ra 1 messagebox hỏi có debug không, ta click debug, HDH Windows sẽ mở ra VC với project tương ứng, và ngừng tại đúng dòng lệnh trên, ta nhấn F10 sẽ step by step trong ct của mình
    Để làm được cách này khi build project dll ta phải bật remote debug, trong setting project mình không nhớ chi tiết
    vì ta phải sửa code, sau khi debug xong lại phải tháo code ra, cho nên để cho tiện, thay vì chèn phát biểu trên ta có thể dùng
    Code:
    #if (define _DEBUG && define _INT_3)
    asm int 3;
    #endif
    _DEBUG là symbol quy định bởi VC
    symbol _INT_3 là symbol do mình tự đặt ra
    Lúc này thì khi debug xong không cần phải tháo code debug nữa
    Còn 1 điều mình muốn nhấn mạnh là khi debug dll, rất nhiều trường hợp bạn sẽ không thể đặt breakpoint được, đặt breakpoint là nó tự động mất tác dụng (chuyển thành trắng), tại sao vậy? Lý do là lúc đó dll chưa được load vào mem, chỉ khi project exe load dll vào mem (sử dụng LoadLibrary hoặc bất kỳ cách nào khác), thì ta mới có thể debug dll được (đặt breakpoint có hiệu lực)

    Viết đến đây mới nhớ là còn 1 cách nữa tương tự như cách 1, nhưng bạn không thể điền đường dẫn vào command chẳng hạn
    vì project exe đang chạy, và nó không cho phép khởi động lại hay tạo 1 instance khác, lúc đó ta dùng chức năng attach into process của VC (có trong menu debug của VC).
    Đã được chỉnh sửa lần cuối bởi nguyentuan2 : 21-05-2007 lúc 09:55 AM.

  6. #6
    Ngày gia nhập
    05 2007
    Bài viết
    6

    Mặc định Cách Debug ATL DLL Project như thế nào?

    Xin cảm ơn mọi người đã quan tâm và cho giải pháp. Quả thật nếu như không thể Debug được thì sẽ là rất khó khăn đối với Programmer gà mờ như mình.

Các đề tài tương tự

  1. Khắc phục lỗi Debug project C++ trong Visual Studio
    Gửi bởi tuph44 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 0
    Bài viết cuối: 18-08-2013, 05:58 PM
  2. Hỏi cách tạo 1 project java và debug với Jcreator cho người mới học.
    Gửi bởi code_c trong diễn đàn Nhập môn lập trình Java
    Trả lời: 4
    Bài viết cuối: 13-03-2013, 09:04 AM
  3. Phần mềm lập trình C phần mềm cho phép debug trên 1 file C/CPP đơn lẻ mà không cần tạo project
    Gửi bởi longtth trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 1
    Bài viết cuối: 14-10-2012, 01:06 PM
  4. Làm thế nào để debug 1 project đã làm sẵn
    Gửi bởi Đu Đu trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 19-02-2011, 11:30 AM
  5. Không debug được project trong VS2008
    Gửi bởi tommy85 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 9
    Bài viết cuối: 22-01-2011, 10:21 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn