2011-09-25 9 views
6

Có thể xem nội dung của ngăn xếp và đống sau mỗi dòng thực thi. Tôi muốn xem nó vì nó sẽ cung cấp cho ý tưởng rõ ràng về phân bổ bộ nhớ và deallocation trong. Net. VớiLàm thế nào tôi có thể nhìn thấy đối tượng bên trong đống & ngăn xếp trong C# .Net

Nếu bất kỳ tài liệu hoặc liên kết nào làm rõ sự nghi ngờ của tôi với câu trả lời của bạn, vui lòng chia sẻ.

+1

Đó là * nhiều * dữ liệu và có thể sẽ không cho bạn biết nhiều. (Hoặc tệ hơn, bạn sẽ phàn nàn rằng nó không bao giờ thu thập rác trong hai mươi dòng mà bạn nhìn vào.) Nếu bạn có nghi ngờ về phân bổ bộ nhớ và thu gom rác thải, đặt câu hỏi và/hoặc tìm kiếm giải thích mức cao, có nhiều khả năng dọn dẹp mọi thứ. – delnan

+0

Chắc chắn, tôi chắc chắn sẽ làm điều này ngay bây giờ trở đi – funsukvangdu

Trả lời

2

SOS hoặc PssCor là một nơi tốt để bắt đầu, dọc theo bên WinDbg.

Khi bạn đã sắp xếp xong; đính kèm WinDbg vào quá trình của bạn, tải phần mở rộng trình gỡ rối. Ví dụ:

.load C:\pathtoextensions\psscor4.dll 

Sau đó, bạn có thể phát hành các !dumpheap hoặc !dumpstack lệnh.

Kết quả của cả hai lệnh này rất thô. !dumpheap -stat sẽ cung cấp cho bạn tổng quan "thống kê" về vùng heap của bạn. Kiểu, số được cấp phát và tổng số byte cho tất cả các phân bổ.

Đây không phải là nhiệm vụ cực kỳ đơn giản. Nó sẽ mất một thời gian để có được đủ thực hành với WinDbg nếu bạn không sử dụng nó trước đây.

Việc bạn có thể làm là đặt điểm ngắt trên phương thức sử dụng !bpmd và sử dụng các lệnh được đề cập ở trên, sau đó bước qua sử dụng lệnh p và chạy lại lệnh.

Tôi chắc chắn có các công cụ thương mại khác như ANTS Profiler hoặc dotTrace có thể hoàn thành công việc - nhưng tôi không có nhiều kinh nghiệm với một trong hai công cụ.

Khi bạn đã bắt đầu, bạn có thể hỏi (mới) các câu hỏi cụ thể hơn về SOS hoặc Psscor.

3

Stack:

var stackInfo = new StackTrace(); 

Heap? Không, bạn cần sử dụng một trình lược tả, trình gỡ rối hoặc các API thích hợp. Không phải là một nhiệm vụ đơn giản. Nếu bạn thử và gặp khó khăn, tốt nhất bạn nên đặt một câu hỏi cụ thể hơn.