2012-03-13 4 views
44

Có cách nào để gỡ lỗi vào một dll decompiled bằng cách sử dụng Resharper và nếu như vậy làm thế nào để bạn làm điều này?Resharper gỡ lỗi một bên thứ ba decompiled dll

Ví dụ: Tôi đang cố gắng gỡ lỗi thành System.Web.Http.ApiController nơi tôi đã biên dịch và có thể xem nguồn.

Tôi đã đặt điểm ngắt nhưng khi tôi chạy ứng dụng, nó không đột nhập vào điểm ngắt bị biên dịch khi gỡ lỗi.

+0

Bạn đã xem các tùy chọn Gỡ lỗi Visual Studio (Tools-> Options-> Debugging-> General). Ví dụ. * Chỉ kích hoạt mã của tôi (Chỉ quản lý) * sẽ bị tắt. – brgerner

+0

ReSharper 6 có tính năng tự động dịch ngược: Có thể nguồn giải mã đó là đủ. – brgerner

Trả lời

6

Theo như tôi biết nó không phải là tốt để gỡ lỗi mã nguồn .net decompiled sử dụng Resharper (lên đến v6.1)

Tuy nhiên, this article giải thích cách bạn có thể gỡ lỗi vào nguồn .net với Visual Studio 2010 - nếu bạn cần hướng dẫn cho phiên bản khác của VS, chỉ cần sử dụng liên kết "Các phiên bản khác" ở đầu trang.

+0

Bạn có thể dịch ngược các DLL bằng cách sử dụng dotPeek và sau đó thiết lập một máy chủ biểu tượng trong VS. Xem bài viết này https://medium.com/@jackspektor/not-just-my-code-how-to-debug-third-party-libraries-without-decompiling-them-8e47e706dbe7 –

1

Bạn cần có các tệp *.pdb tương ứng để bước vào mã.

Nếu không, nó có thể giúp dịch ngược tệp nhị phân, ví dụ: Telerik tự do có sẵn JustDecompile.

Nhưng bạn nên lưu ý rằng điều này có thể vi phạm thỏa thuận cấp phép của nhà cung cấp bên thứ ba.

10

Không, điều đó sẽ không thể thực hiện được với Visual Studio và ReSharper, nhưng có một sản phẩm khác có thể giúp bạn, .NET Reflector.

Phiên bản VSPro có "Gỡ lỗi hội đồng bằng trình gỡ lỗi Visual Studio, ngay cả khi bạn không có nguồn" tính năng, cho phép bạn tạo tệp .pdb và mã nguồn đã giải mã cho các hội đồng .NET đã được xây dựng.

Từ kinh nghiệm, nó có một số vấn đề với một số hội đồng, nhưng tôi không thể nhớ lý do tại sao, vì vậy nó có thể hoặc có thể không giúp bạn.

Với ReSharper bạn có thể xem mã nguồn đã giải mã từ các hội đồng, theo cách tương tự, Reflector sẽ tạo ra nguồn đã bị biên dịch, nhưng bạn không thể gỡ lỗi mã với các tệp nguồn đó bằng ReSharper.

6

[Tiết lộ đầy đủ - Tôi là nhân viên Telerik] Với phiên bản mới nhất của Telerik JustCode, bây giờ bạn có thể gỡ lỗi mã đã biên dịch mà không cần thoát khỏi Visual Studio. Để biết thêm thông tin, bạn có thể đọc bài đăng trên blog của tôi thông báo tính năng here.

+1

Đây là tài liệu duy nhất hoạt động cho tôi. .Net Reflector giữ crashing studio trực quan 2010, và Resharper cho phép xem mã biên dịch nhưng không gỡ lỗi thông qua nó. – Dwayne

+1

Nhưng nó không rẻ :) –

+0

Tôi không muốn gỡ lỗi cho số tiền đó nhiều tiền lol – sotn

31

Có, bạn có thể với Resharper 9.0 (không chắc chắn cho các phiên bản trước đó).

Đến "Resharper Menu"> "Windows"> "hội Explorer"

Thêm một hội đồng đó với nút đầu tiên bên trái (với a + vào nó)
Sau đó bấm chuột phải vào nó và chọn "Tạo Pdb ..." (đợi cho đến khi hoàn thành) và bây giờ bạn có thể ngắt mã.
Lưu ý tuy nhiên khi Jens nói, nó có thể sẽ điều khoản cấp phép nghỉ

+4

Tôi đã viết một bài đăng blog giải thích cách làm này chi tiết hơn: http://blog.pglazkov.com/2016/02/how- to-debug-any-library-source-code.html –

+1

Nếu bạn đã gỡ lỗi, hãy vào "Debug"> "Windows"> "Modules". Chọn assembly bạn muốn gỡ lỗi và tải "pdb" được tạo trước đó bởi Resharper. – polkduran

+0

Để sử dụng mẹo này, bạn phải chọn _Show External Code_ trong menu ngữ cảnh của khung ngăn xếp trong cửa sổ _Call Stack_ trong Visual Studio. – rgb

5

Chọn một lắp ráp trong hội Explorer Window và bấm Export to Project trên thanh công cụ hoặc chọn Export to Project trong menu ngữ cảnh.

Thông tin thêm here

Ngoài ra, kiểm tra xem bạn có cấu hình này trên chính trang tùy chọn gỡ lỗi (Tools -> Options -> Debugging -> General):

Bỏ chọn "Enable Just My Code" tùy chọn

Bỏ chọn "Enable NET nguồn Khung bước" tùy chọn

Kiểm tra "Enable hỗ trợ máy chủ nguồn" tùy chọn

Bỏ chọn "Yêu cầu tệp nguồn khớp chính xác với phiên bản gốc

+1

Sau khi thử mọi thứ, các cài đặt này đã làm cho tôi, cảm ơn! –