Trình biên dịch dễ sử dụng cho C ++ trên Linux là gì? [đóng cửa]


79

Tôi cần lập hồ sơ một số mã chạy C ++ trên Linux. Các bạn có thể giới thiệu một số người làm hồ sơ không?


1
Bạn nên thêm các 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

2
Có vẻ như một bản sao của stackoverflow.com/questions/375913/… .
Michael Myers

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

Xem câu hỏi này trên nghiêng: slant.co/improve/topics/1005
ideasman42

Câu trả lời:


37

Sử dụng gprof.

Chỉ cần biên dịch với -pgflag (tôi nghĩ (nhưng không chắc) bạn phải thực hiện 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 sau đó sẽ tạo ra.

ví dụ:

gcc -pg -o whatever whatever.c

./whatever

gprof whatever gmon.out

Điều tương tự với g ++ và cpp.


32
Lập hồ sơ mã chưa được tối ưu hóa là một chút vô nghĩa, phải không? Tương tự, mã hồ sơ đã được sửa đổi nhiều với -pg thường khiến bạn hiểu sai trong việc tối ưu hóa những điểm sai.
liên bang

1
-pg là một lựa chọn mối liên kết, không biên dịch
Slug PUE

24

valgrind là một trình biên dịch Linux nổi tiếng


suy nghĩ valgrind đã hơn để kiểm tra rò rỉ bộ nhớ .. Tôi cố gắng để xem những chức năng đang nhận được gọi vv
Shergill

14
sử dụng công cụ bộ có tên "callgrind"
dfa 22/07/09

2
Valgrind chỉ đơn giản là một khuôn khổ để xây dựng các công cụ động. Mặc dù vậy, 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 người khá giỏi trong việc lập hồ sơ.
Falaina


13

Thu phóng từ RotateRight ( http://www.rotateright.com ) là những gì tôi đang sử dụng. Nó có một cái nhìn bướm về 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 xây dựng và lập hồ sơ mã được tối ưu hóa .


1
Chỉ mới cho chương trình này một shot, nó thực sự khá tốt đẹp! Hiện tại, 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ã được xây dựng -fno-omit-frame-pointerđể cấu hình hiệu quả.
Nik Reiman

1
Liên kết dường như đã chết. Có ai biết nơi (hoặc nếu) nó có thể được tìm thấy ở nơi khác?
Simon F

12

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 đường cong học tập về nó, nhưng nó khá mạnh 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ó ký hiệu gỡ lỗi.

Vtune là một công cụ cấu hình rất mạnh khác của Intel. 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ập các tính năng là một tập con của Callgrind) và Massif cũng rất thú vị, nhưng tôi không có kinh nghiệm về phần sau.


+1 cho oprofile, đó không phải là "công cụ dễ dàng"
dfa 22-09-07

1
Haha, đúng. Tôi có lẽ không nên làm cho điều đó nghe 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ư các công cụ Vtune và Valgrind, nhưng tôi cảm thấy bạn làm quen với nó khá nhanh.
Falaina

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

Rất tiếc, VTune không miễn phí cho mọi mục đích sử dụng
gỉyx


5

Google cũng có một trình biên dịch đẹp mắt như một phần của google-perftools - được bao gồm trong Debian / Ubuntu và có thể là các bản phân phối khác.


2

gprof là công cụ gnu tiêu chuẩn để lập hồ sơ.


2

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

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


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.