2008-09-10 49 views
18

Tôi cần hiển thị thông tin lược tả được lấy từ một CPU nhúng sâu, trình bày nó theo cách mà các nhà phát triển khác trong nhóm của tôi sẽ có thể hành động theo. Dữ liệu lược tả là ảnh chụp nhanh của bộ đếm chu trình tại mục nhập và thoát của mọi chức năng, vì vậy chúng tôi có biểu đồ cuộc gọi được chú thích với độ chính xác thời gian phụ là micro giây. Tôi không muốn chỉ đổ tên chức năng và thời gian như gprof, tôi đang tìm kiếm một cái gì đó dễ hiểu hơn và hành động theo.Công cụ trực quan hóa hồ sơ?

Có ai đã làm việc với một công cụ định dạng đặc biệt tốt (trên nền tảng nào), giúp dễ dàng xác định các khu vực mã để xem xét không? Tôi đang tìm một ví dụ đầy cảm hứng để làm theo cách hiển thị biểu đồ cuộc gọi, nhưng nếu có công cụ tốt với định dạng đầu vào tôi có thể xoa bóp dữ liệu của mình để tôi sẽ sử dụng nó. Tôi có thể sử dụng Windows, Linux hoặc MacOS X để chạy công cụ trực quan hóa.

Bài viết lược tả trên IBM DeveloperWorks dẫn tôi đến GraphViz, với ví dụ profiling trên trang web của họ. Chặn một gợi ý khác ở đây, tôi sẽ sử dụng GraphViz và bắt chước ví dụ về lược tả của chúng.

Trả lời

2

Tôi đề nghị bạn thả gprof + graphviz cho OProfileUI, trừ khi bạn không có lựa chọn.

2

IE 8b2 cung cấp simple display của cây gọi cho javascript mà tôi tin là hữu ích hơn nhiều so với biểu đồ GraphViz.

Biểu đồ GraphViz thật tuyệt vời để hình dung cây cuộc gọi nhưng rất khó để hình dung các vấn đề về thời gian (IMHO dữ liệu quan trọng hơn).

** Chỉnh sửa: Tôi nghĩ điều đáng lưu ý là tất cả các công cụ được đề xuất đều sử dụng cây dựa trên lưới để trực quan hóa cây gọi. Điều này cho phép bạn xem cấu trúc cuộc gọi mà không làm giảm dữ liệu thời gian như tôi tin rằng bạn làm với biểu đồ GraphViz. *

1

JetBrains dotTrace (có bản dùng thử bạn có thể chơi cùng). Nó tổ chức các ngăn xếp cuộc gọi và có thể dễ dàng tìm thấy các điểm rắc rối. Có rất nhiều khả năng lọc là tốt. Rất dễ điều hướng và tìm thấy những gì bạn đang tìm kiếm.

3

Làm thế nào về "GTKWave"? Nhưng bạn phải chèn đầu dò vào mã của mình.

+0

Ý tưởng thú vị, @XC. - không GTKWave hình dung [VCD] (http://en.wikipedia.org/wiki/Value_change_dump) tập tin? Tôi đã sử dụng 'gdb' với mô phỏng [simulavrxx] (http://www.nongnu.org/simulavr/usage.html), nhưng có trình mô phỏng tạo ra kết xuất VCD cho GTKWave ... Làm thế nào có thể đạt được kết xuất VCD cho một chương trình C 'chạy cục bộ' hoặc kịch bản Perl? – sdaau

17

Một công cụ gọn gàng khác để trực quan hóa dữ liệu lược tả là gprof2dot.py python script. Nó có thể được sử dụng để hình dung một số định dạng khác nhau: "Đây là một kịch bản Python để chuyển đổi đầu ra từ prof, gprof, oprofile, Shark, AQtime và python profilers vào một biểu đồ chấm." Đây là những gì đầu ra như sau:

http://jrfonseca.googlecode.com/svn/wiki/gprof2dot_small.png

+0

Đây là một công cụ trực quan tuyệt vời! –

+0

Có cách nào để hỗ trợ python3.2 không? –

3

Valgrind làm hồ sơ (và nhiều hơn nữa), và có GUIs cho trực quan.

+4

Kcachegrind là một trong những phổ biến nhất. –

4

tôi sử dụng Kprof http://kprof.sourceforge.net/

nó trở về già, nhưng tôi không bao giờ tìm thấy một công cụ tốt hơn để kiểm tra các kết quả từ gprof.

2

Bạn có thể sử dụng Senseo, một plugin cho Eclipse. Nó cho bạn thấy hiệu suất, cấp phát bộ nhớ, các đối tượng được tạo, thời gian đã sử dụng, các phương thức thực tế được gọi, di chuột qua các chữ ký phương thức hoặc các cuộc gọi, gọi cây bối cảnh, trình khám phá gói và nhiều thứ khác.

0

Tôi đã viết một công cụ trực quan dựa trên trình duyệt, profile_eye, hoạt động trên đầu ra của gprof2dot.

gprof2dot rất hữu ích khi tìm kiếm nhiều đầu ra công cụ định dạng và thực hiện công việc tuyệt vời ở vị trí phần tử biểu đồ. Kết xuất cuối cùng là đồ họa tĩnh, thường rất lộn xộn.

Sử dụng d3.js có thể loại bỏ phần lớn sự lộn xộn đó, thông qua sự mờ dần tương đối của các phần tử không tập trung, chú giải công cụ và fisheye distortion.

Để so sánh, hãy xem profile_eye's visualization trong số canonical example used by gprof2dot.

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