2009-08-20 38 views
12

Tôi đang tìm cách xác định tất cả các cá thể hiện tại trên đống các loại thực hiện giao diện đã cho (trong khi gỡ lỗi WinDbg). Vì các giao diện không phải là các kiểu theo nghĩa là bạn có thể tạo các cá thể của một giao diện, chúng rõ ràng không hiển thị khi kiểm tra đống. I E. !dumpheap là một chút trợ giúp ở đây.Làm thế nào để tìm tất cả các trường hợp của các loại thực hiện một giao diện cụ thể trong khi gỡ lỗi

Tuy nhiên, !dumpmt -md trên MT đã cho liệt kê số IFaces trong IFaceMap. Theo như tôi có thể nói số này dường như để cho biết nếu loại thực hiện một hoặc nhiều giao diện hay không. Khi sử dụng các phương pháp cờ -md trên loại cũng được liệt kê.

Thật không may là !dumpmd không gắn một phương thức nhất định với giao diện theo như tôi có thể nói, vì vậy không thể sử dụng phương thức này để thiết lập giao diện được triển khai.

Tôi cho rằng thông tin này có sẵn ở đâu đó trong bộ nhớ, nhưng tôi không chắc chắn nơi cần tìm. Bất kỳ đầu vào nào được đánh giá cao.

+0

Tại sao bỏ phiếu xuống? Vui lòng giải thích để tôi có cơ hội cải thiện câu hỏi của mình. Cảm ơn. –

Trả lời

-1

Nếu bạn không phải tạo chương trình của riêng mình, hãy thử NDepend.

+2

Tôi không thể thấy NDepend sẽ hữu ích như thế nào ở đây. Tôi có tất cả các mã nguồn có sẵn, vì vậy tôi có thể tìm thấy những người triển khai nếu cần.Tôi quan tâm đến việc tìm kiếm các cá thể trong bộ nhớ khi chạy. –

0

Các bạn đã thử

! Dumpheap -Loại IFaces

Nó sẽ hiển thị các bảng phương pháp quá. Bạn có thể đào sâu hơn từ đó.

+3

Không, danh sách các trường hợp các loại mà IFaces là một phần của tên của chúng. Tham số kiểu sử dụng một kết hợp văn bản thông thường trên các tên kiểu và do đó không có gì để làm với các giao diện. –

0

Đặt cược tốt nhất của bạn là bắt đầu với Crack.NET, thực hiện một số việc bạn muốn làm (mặc dù nó nhắm vào các ứng dụng wpf và winforms). Dự án là nguồn mở, do đó bạn có thể lấy được phương thức được sử dụng để lấy thông tin bạn muốn từ nguồn. Nó có một plugin cho Reflector cho phép bạn kiểm tra các chi tiết của một đối tượng bộ nhớ.

trang dự án: http://joshsmithonwpf.wordpress.com/cracknet/

CodePlex: http://cracknetproject.codeplex.com/

1

Một vài năm trước, tôi đã tuyệt vọng đối với một số thông tin như thế này. Tôi đã kết thúc việc tạo một lần xem trang sẽ chỉ xuất hiện khi bạn sử dụng tùy chọn tối nghĩa để khởi động ứng dụng. Khi tôi nhấp vào "làm mới", nó sẽ sử dụng sự phản chiếu để di chuyển qua tất cả các thuộc tính của cá thể lớp gốc. Nếu nó tìm thấy một thuộc tính là một bộ sưu tập hoặc giữ các thuộc tính khác, nó sẽ đệ quy gọi chúng. Kết quả cuối cùng là một cây dữ liệu cá thể tại thời điểm đó đã có sẵn để xem xét.

Những điểm chính để phương pháp này là

  1. Hãy chắc chắn rằng bạn chỉ có một trường hợp đối tượng cấp cao nhất, hoặc bạn biết chính xác có bao nhiêu và đó trường top-level có. (Ngoài ra, đừng quên các giá trị tĩnh.)
  2. Tìm hiểu cách sử dụng phản chiếu để xem qua các bit thông tin có liên quan.
  3. Hiển thị khi cần và theo kiểu dễ đọc.
+0

Vâng, thông tin có sẵn trong mã nguồn. Tôi chỉ muốn tìm hiểu cách khai thác thông tin trong quá trình gỡ lỗi. Kể từ khi thời gian chạy phải có thông tin này ở đâu đó nó là "chỉ" một vấn đề đào ra các chi tiết. Nhưng cảm ơn cho đầu vào của bạn anyway. –

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