2008-12-08 30 views
5

Có công cụ nào để hiển thị đồ thị cuộc gọi động không? Tôi thấy một tham chiếu đến một cho Visual Basic 6 nhưng tôi muốn một cho NET.Làm cách nào tôi có thể xem trực quan biểu đồ cuộc gọi động cho chương trình .NET?

Nếu tôi có để xây dựng một visualizer bản thân mình tôi nên bận tâm với NET profiling API hay tôi nên làm điều gì đó với Mono.Cecil? Tôi bắt đầu viết một thời gian chạy CLI với Cecil, nhưng tôi đoán sẽ dễ dàng hơn nếu tôi chỉ cần gọi các cuộc gọi ghi âm đồ thị trong hội đồng, mặc dù vì tôi không biết lộ trình thực hiện trước và sẽ phải có mọi thứ .

Trả lời

1

Profiling CLR là mục đích của API NET Profiling, vì vậy nó có vẻ là hoàn hảo cho nhu cầu của bạn. Hầu hết các phần của sản phẩm profiler được dựa trên đầu trang của nó. Nhưng bạn sẽ phải viết mã không được quản lý, urk.

Sử dụng Cecil cũng có thể, và khá đơn giản nếu bạn chỉ muốn ghi lại nhập/thoát phương thức.

EDIT:

Vâng, PostSharp có lẽ là giải pháp tốt nhất, vì nó cho phép bạn xử lý một yêu cầu như vậy bằng cách dựa vào dệt tĩnh. AOP cung cấp mức trừu tượng tốt hơn so với viết lại trực tiếp IL với Cecil.

+0

Tôi đã cập nhật liên kết là liên kết cũ đã chết. PostSharp tại vị trí mới dường như tập trung nhiều hơn vào việc xây dựng mã hơn là phân tích mã hiện có, nhưng tôi phải nói rằng tôi chỉ liếc nhìn trang web. –

3

Có lẽ dự án này mã nguồn mở trên CodePlex có thể giúp điểm như bắt đầu:

SequenceViz

http://www.codeplex.com/sequenceviz

"SequenceViz là một công cụ để tạo ra sơ đồ chuỗi bằng kỹ thuật đảo ngược .NET Assemblies. Mặc dù nó có nhiều hơn một chút so với các phiên bản sau. "

Có phiên bản độc lập và triển khai làm plugin phản xạ.

alt text http://i3.codeplex.com/Project/Download/FileDownload.aspx?ProjectName=sequenceviz&DownloadId=44432

+0

Tôi nghĩ rằng marxidad quan tâm đến biểu đồ gọi * động *, ngụ ý rằng việc thực thi phải được lược tả. SequenceViz, như Reflector, thực hiện một phân tích tĩnh. –

+0

Tôi biết về SequenceViz nhưng phần cứng sẽ nhận được các cuộc gọi thực tế được thực hiện trong thời gian chạy. –

+0

Tôi hiểu, nhưng tôi nghĩ bạn có thể xem mã và lấy nó làm cơ sở (cho phần trực quan) và "thêm" các công cụ lược tả – splattne

1

Bạn coud sử dụng NProf, một dự án mã nguồn mở trên Sourceforge. Nó cho phép bạn mở rộng GUI mặc định bằng các công cụ trực quan mới.

"nprof được thiết kế không chỉ là trình biên dịch chính thức cho các ứng dụng .NET, mà còn là một API hoàn chỉnh có thể được sử dụng để xây dựng các giao diện người dùng khác, cũng như mở rộng GUI mặc định công cụ."

1

Tôi thích CLR Profiler. Tôi sẽ không lãng phí dung lượng bằng cách tạo lại tài liệu ở đây, nhưng có vẻ như đó chính xác là những gì bạn đang tìm kiếm.

+0

Trình biên dịch CLR có bao gồm các đối số hàm được truyền và trong một chuỗi các cuộc gọi hàm không? –

+0

Nó nắm bắt chuỗi các cuộc gọi chức năng, mà nó có thể trình bày trong một thời trang trực quan rất hữu ích, nhưng không có nó không nắm bắt các đối số chức năng. –

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