2010-04-12 39 views
6

Tôi cần gỡ lỗi dự án thư viện lớp được cung cấp cho dự án chính (một trang web ASP.NET) dưới dạng tệp DLL. Ví dụ, tôi cần phải đặt một số điểm ngắt để kiểm tra những gì đang xảy ra trong quá trình thực hiện..NET - Làm thế nào để gỡ lỗi một DLL?

tôi đã cố gắng How to: Debug from a DLL Project, tiếc là nó đã không làm việc ...

Làm thế nào tôi có thể làm điều đó?

PS: Tôi có mã nguồn!

+1

Và bạn không có mã nguồn của DLL hoặc thư viện .NET không? – Ivo

+0

@GordonB Tôi không thể làm điều đó. Tôi cần phải chạy nó như một hội đồng bên ngoài! –

Trả lời

3

Debugging DLLs in Visual Studio (xem # 2 trong danh sách) có thể là những gì bạn đang tìm kiếm (tiết lộ đầy đủ: Có, đây là trang web cá nhân của tôi).

  • Với phương pháp # 1, bạn không thể xem biến.

  • Với phương pháp # 2, bướC# 2, nếu bạn không thể mở dự án trong cùng một trường hợp Visual Studio, bạn có thể chạy nhị phân của dự án (có nghĩa là, chạy nó bên ngoài Visual Studio, nhưng làm cho chắc chắn bạn chạy phiên bản gỡ lỗi.) và đính kèm trình gỡ lỗi Visual Studio vào menu (menu Gỡ lỗi ->Đính kèm vào Quy trình).

Dưới đây là các bước để phương pháp # 2 để không ai phải theo liên kết:

Gắn một quá 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.

  1. Mở dự án DLL trong Visual Studio.
  2. 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ì quy trình sẽ có trình gỡ lỗi được đính kèm.
  3. 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).
+0

Đây chính xác là những gì tôi đang tìm kiếm! Mẹo tuyệt vời. Cảm ơn bạn! –

+0

Câu hỏi xin vui lòng. Tôi đã thử # 1 và nó cho tôi thấy dấu vết stack nhưng làm thế nào tôi có thể làm gì nếu tôi muốn xem các biến của tôi? Tôi không hiểu số 2. Làm thế nào tôi có thể chạy dự án sử dụng DLL trong cùng một trường hợp của studio hình ảnh nơi dự án DLL được nạp? –

+0

@Amokrane, xem chỉnh sửa. –

8

Nếu bạn có mã nguồn và tệp .pdb trong thư mục BIN của mình, thì bạn có thể gỡ lỗi thông qua mã đó. Tuy nhiên, bạn sẽ cần phải kích hoạt tính năng gỡ lỗi mã bên ngoài trong Visual Studio.

Bạn cần phải bỏ chọn "Enable Just My Code" tùy chọn: Menu cụ -> Tùy chọn ->Debugging ->Enable Just My Mã

LƯU Ý: Điều này sẽ chỉ làm việc cho .NET hội đồng.

+0

Nhưng làm cách nào để gỡ lỗi thông qua mã? –

+0

Nếu bạn có các tệp PDB và các tệp nguồn, thì tất cả những gì bạn cần làm là đặt một điểm dừng ở đâu đó trong mã của bạn để gọi vào lắp ráp bên ngoài. Visual Studio sẽ tự động nhận các biểu tượng và tải chúng, cho phép bạn bước vào mã. Nếu bạn không có các tệp nguồn thì có các chương trình có thể xây dựng lại một biểu diễn mã từ PDB. Nếu bạn không có tệp .pdb thì mọi thứ trở nên khó khăn hơn nhiều. – Josh

+0

@Amokrane: bạn sẽ phải bước vào mã. Đặt một trình gỡ rối vào mã của bạn trên một nơi trước khi bạn gọi một số phương thức từ DLL. Bước vào phương pháp bằng cách nhấn F11. – Marek

0

Khi bạn xây dựng dự án thư viện lớp, tệp .pdb được tạo trong thư mục Debug hoặc Release của thư viện lớp đó. Hai tệp này được đề cập bởi dự án ASP.NET khi bạn nhấp chuột phải và chọn tùy chọn "Thêm tham chiếu" và trỏ đến tệp DLL của dự án thư viện lớp.

Các vấn đề liên quan