2010-05-03 29 views
7

Tôi không hiểu tài liệu về gprof về cách biên dịch chương trình của bạn để lược tả bằng gprof. Trong g + +, nó có cần thiết để biên dịch với tùy chọn -g (thông tin gỡ lỗi) bổ sung cho tùy chọn -pg hay không. Trong mỗi trường hợp, tôi nhận được các kết quả khác nhau và tôi muốn xem các nút cổ chai trong ứng dụng của tôi ở chế độ phát hành ở đâu, không ở chế độ gỡ lỗi, trong đó nhiều trình tối ưu hóa bị bỏ qua bởi trình biên dịch (ví dụ: nội tuyến)Biên soạn bằng g ++ cho gprof

+0

http://stackoverflow.com/questions/1777556/alternatives-to-gprof/1779343#1779343 –

+1

'-g' không có nghĩa là tối ưu hóa bị tắt. '-O' điều khiển opimization. Bạn có thể biên dịch với cả hai '-g' và' -O2' chẳng hạn. –

Trả lời

5

documentation mà bạn có thể làm, hoặc lưu ý rằng bạn cần -g cho line by line profiling. Vì vậy, nếu bạn muốn hồ sơ theo điều kiện phát hành và có thể chấp nhận không thực hiện từng dòng, bạn sẽ có thể biên dịch mà không cần -g.

+0

Tôi chỉ quan tâm đến các cuộc gọi chức năng chứ không quan tâm đến từng dòng. Không có tùy chọn -g, nhiều hàm đang được gọi không hiển thị. Tôi không nghĩ rằng điều này là do nội tuyến, bởi vì nhiều người trong số những phương pháp đó là những người lớn (hơn 50 dòng mã). – myahya

+1

@myahya, tôi nghĩ rằng nó rất tốt có thể là nội tuyến. Theo mặc định, GCC có thể nội tuyến chức năng lên đến 400 hướng dẫn GCC nội bộ dài (tôi biết những điều này không ánh xạ trực tiếp đến các dòng mã); xem http://bazaar.launchpad.net/~vcs-imports/gcc/trunk/annotate/99780/gcc/params.def#L58. Ngoài ra, bạn đang sử dụng cờ biên dịch nào? –