2009-03-17 35 views
5

Tôi đã thực hiện một số công việc MSIL và đã xem xét các tham chiếu tới ba trình gỡ rối này.Trình gỡ rối MSIL - Mdbg, Dbgclr, Cordbg

  • Sự khác nhau giữa chúng là gì?

  • Là một trong số chúng tốt hơn so với các công cụ khác. chức năng?

  • Có những người khác mà tôi đã bỏ lỡ không?

Trả lời

10

Tôi giả sử bạn có nghĩa là DbgClr không phải là Clt và mdbg không phải là mdbug?

Visual Studio là một trong những bạn đã bỏ lỡ, nhưng DbgClr phải có cùng chức năng. http://blogs.msdn.com/andypennell/archive/2005/02/21/377621.aspx.

Bạn cũng có thể sử dụng windbg với SOS extensions để thực hiện gỡ lỗi được quản lý từ trình gỡ lỗi Windows. SOS cũng hữu ích khi sử dụng VS vì nó cho phép bạn kiểm tra bộ nhớ và vân vân.

Để xem gỡ lỗi MSIL cấp nguồn, hãy thử sử dụng ilasm với tùy chọn/gỡ lỗi. Thời gian qua tôi đã kiểm tra, VS sẽ cho phép bạn bước qua nguồn .il giống như C# hoặc bất kỳ ngôn ngữ nào khác.

Blog MSDN có rất nhiều nội dung về gỡ lỗi ứng dụng .NET - Tôi khuyên bạn nên tìm kiếm thêm ở đó.

+0

Cảm ơn. Ý của bạn có phải là ilasm với tùy chọn/debug không? Làm cách nào để sử dụng VS để duyệt qua nguồn a/il? Tôi tải nó trong VS nhưng các nút F5 và F6 không làm gì? – nzpcmad

+0

Ồ, vâng, ilasm. Tôi tin rằng bạn chỉ cần bắt đầu hoặc đính kèm vào quá trình này. VS sẽ không xây dựng và thi hành mã IL, nhưng nó sẽ tải các biểu tượng cho một quá trình, và các ký hiệu đó có thể trỏ tới .il. – MichaelGG

+1

Một điều quan trọng cần lưu ý là trình gỡ lỗi VS sẽ chỉ thực hiện các hướng dẫn IL hoặc cho phép bạn đặt các điểm ngắt ở cấp "tuyên bố". Trong vòng IL, một tuyên bố là khoảng một tập hợp các lệnh dẫn đến ngăn xếp đánh giá bị trống. Nếu bạn có "ldarg_0" "gọi Object.ToString" "stloc_0" 3 hướng dẫn này sẽ là một tuyên bố. Bạn có thể thiết lập một điểm ngắt tại lệnh "ldarg_0", nhưng không phải tại lệnh "gọi Object.ToString". –

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