2009-07-22 32 views
65

Tôi cần phải cấu hình một số mã chạy C++ trên Linux. Các bạn có thể giới thiệu một số profilers không?Trình biên dịch dễ sử dụng cho C++ trên Linux là gì?

+1

Bạn nên thêm thẻ Linux và C++. Bạn có thể sẽ nhận được phản hồi tốt hơn và nhiều ý kiến. – Duck

+1

Trông giống như một bản sao của http://stackoverflow.com/questions/375913/what-can-i-use-to-profile-c-code-in-linux. –

+0

ví dụ: likwid, LLTng, oprofile, valgrind, vtune, gprof, perf, gperftools, pTop – Shan

Trả lời

17

valgrind là một cũng-biết linux profiler

+0

nghĩ valgrind là nhiều hơn cho rò rỉ bộ nhớ kiểm tra .. Tôi đang cố gắng để xem những chức năng được gọi là vv – shergill

+8

sử dụng công cụ bộ gọi là "callgrind" – dfa

+1

Valgrind chỉ đơn giản là một khuôn khổ để xây dựng các công cụ năng động. Mặc dù, nó trở thành đồng nghĩa với Memcheck, một công cụ được xây dựng trên Valgrind.Callgrind là một khá tốt tại profiler. – Falaina

11

Tôi là một fan hâm mộ của Oprofile. Nó liên quan đến việc cài đặt một mô-đun hạt nhân và có một chút của một đường cong học tập với nó, nhưng nó khá mạnh mẽ và hoạt động rất tốt cho các chương trình/chương trình được tối ưu hóa mà không cần các biểu tượng gỡ lỗi.

Vtune là một trình tạo hồ sơ rất mạnh khác do Intel tạo ra. Tôi tin rằng phiên bản Linux là miễn phí cho phần mềm phi thương mại.

Ngoài ra còn có bộ công cụ Valgrind do dfa đề xuất. Callgrind có lẽ sẽ là thứ bạn quan tâm nhất. Cachegrind (có tính năng là một tập hợp con của Callgrind) và Massif cũng thú vị, nhưng tôi không có kinh nghiệm với cái sau.

+0

+1 cho trang web linh hoạt, đó không phải là "công cụ dễ dàng" – dfa

+1

Haha, đúng. Tôi có lẽ không nên làm cho âm thanh đó dễ dàng như vậy :) Nó chắc chắn không đơn giản như "chạy chương trình dưới nó" như Vtune và Valgrind công cụ, nhưng tôi cảm thấy bạn đã quen với nó khá nhanh chóng. – Falaina

+0

oprofile trông thú vị - nó có hỗ trợ x86_64 không? – LiraNuna

2

gprof là công cụ gnu tiêu chuẩn cho lược tả.

4

Google cũng có một hồ sơ tốt đẹp như là một phần của google-perftools - được bao gồm trong Debian/Ubuntu và có thể các bản phân phối khác.

5

Hãy xem KCacheGrind là giao diện đồ họa cho valgrind và làm cho nó thực sự dễ sử dụng.

34

Sử dụng gprof.

Chỉ biên dịch với cờ -pg (Tôi nghĩ (nhưng không chắc chắn) bạn phải bật tối ưu hóa.) Và sử dụng gprof để phân tích tệp gmon.out mà tệp thực thi của bạn sẽ sản xuất.

ví dụ:

gcc -pg -o whatever whatever.c 

./whatever 

gprof whatever gmon.out 

Cùng một điều với g ++ và cpp.

+20

Tạo mã không được tối ưu hóa là một chút vô nghĩa, phải không? Tương tự như vậy, mã profiling đã được sửa đổi nhiều với -pg thường misguides bạn vào tối ưu hóa các điểm sai. – federal

13

zoom từ RotateRight (http://www.rotateright.com) là những gì tôi đã sử dụng. Nó có một cái nhìn bướm của các chức năng và bạn có thể nhấp đúp vào bất kỳ chức năng nào để đi sâu vào mã nguồn hoặc mã asm. Xây dựng với thông tin gỡ lỗi (-g) để xem nguồn của bạn, nhưng bạn vẫn nên tạo và cấu hình tối ưu hóa mã.

+0

Chỉ cần cho chương trình này một shot, nó thực sự khá tốt đẹp! Hiện nay hồ sơ yêu thích của tôi trên Linux; tuy nhiên điều đáng nói là nó yêu cầu mã phải được xây dựng bằng '-fno-omit-frame-pointer' để có hiệu quả. –

+1

Liên kết có vẻ đã chết. Có ai biết nơi (hoặc nếu) nó có thể được tìm thấy ở nơi khác? –

2

Hãy xem Sysprof. Bạn phân phối rất có thể nó đã có sẵn rồi.

Lưu ý rằng tất cả các profilers được đề cập đều hoạt động tốt nhất nếu ứng dụng của bạn được biên dịch với các con trỏ khung. Tức là, bạn nên sử dụng -fno-omit-frame-pointer trên dòng lệnh gcc.

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