Có hai phương pháp tôi đã đi qua:
1) Truy cập vào dự án DLL từ sử dụng dự án. Điều này liên quan đến việc xây dựng các DLL trong một trường hợp riêng biệt của Visual Studio và sau đó truy cập vào DLL thông qua một dự án khác nhau trong Visual Studio (điều này giả định bạn có mã nguồn). Có một số cách để thực hiện điều này:
- Bạn có thể thêm
Trace.WriteLine
báo cáo trong DLL mà sẽ hiển thị lên trong cửa sổ 'Output' trong Visual Studio.
- Bạn có thể thêm
System.Diagnostics.Debugger.Break()
câu lệnh vào mã DLL. Khi chạy dự án gọi điện trong Visual Studio, thực thi chương trình sẽ dừng ở đó. Từ đây bạn có thể thêm truy cập gọi stack (bao gồm tất cả các chức năng cuộc gọi trong DLL chính nó) và thiết lập nghỉ điểm (mặc dù biểu tượng cho breakpoint sẽ xuất hiện vô hiệu hóa và văn bản di chuột cho điểm break sẽ đọc " Điểm ngắt sẽ hiện không bị trúng. Không có ký hiệu đã được tải cho tài liệu này ").
- Nếu DLL được ném một ngoại lệ (mà bạn có thể nhìn thấy từ cửa sổ 'Output' nếu ngoại lệ được bắt và xử lý bởi các DLL) bạn có thể nói với Visual Studio để luôn luôn phá vỡ khi rằng loại ngoại lệ là ném. Hit Ctrl +Alt +E, tìm ra loại ngoại lệ được ném, và nhấn cột 'Ném' cho rằng ngoại lệ. Từ đây chính xác là như thể bạn đã sử dụng
System.Diagnostics.Debugger.Break()
(xem bên trên).
2) Đính kèm quy trình sử dụng cho dự án DLL. Điều này liên quan đến việc hooking trình gỡ rối Visual Studio vào một tiến trình đang chạy.
- Mở dự án DLL trong Visual Studio.
- Chạy ứng dụng sử dụng DLL (ứng dụng này không thể chạy từ một phiên bản khác của Visual Studio vì quá trình sẽ có trình gỡ lỗi được đính kèm).
- Từ đây bạn có thể thêm điểm ngắt và bước qua mã DLL được tải trong Visual Studio (mặc dù điểm ngắt sẽ xuất hiện bị vô hiệu hóa giống như trong phương pháp 1).
Nguồn
2008-12-08 18:08:39
Vâng, trích xuất mã vào tệp, thêm chúng vào một dự án dll và biên dịch lại dll. Thêm dự án này vào giải pháp của bạn và thay đổi các tham chiếu để trỏ đến dự án đó. Sau đó, bạn sẽ có thể gỡ lỗi nó. –
Tôi gặp vấn đề tương tự. Tất cả các nguồn đều thuộc về tôi, nhưng tôi không thể chỉ thêm chúng vào dự án tham chiếu. Có hơn 20 dự án liên quan ... Và không có giải pháp nào dưới đây thực sự giúp đỡ – TimothyP