Tôi đang làm việc trên môi trường Linux. Tôi có hai 'C' nguồn gói đào tạo và test_train.gprof: Cách tạo biểu đồ cuộc gọi cho các chức năng trong thư viện được chia sẻ được liên kết với chương trình chính
- gói đào tạo khi biên soạn tạo libtrain.so
- liên kết test_train để libtrain.so và tạo ra thực thi đào tạo kiểm tra
Bây giờ tôi muốn tạo ra một đồ thị cuộc gọi sử dụng gprof đó cho biết thứ tự gọi của các hàm trong chương trình chính cũng như các hàm bên trong libtrain.so
Tôi đang biên dịch và liên kết cả hai gói với tùy chọn -pg và mức gỡ lỗi là o0. Sau khi tôi thực hiện ./train-test, gmon.out được tạo. Sau đó, tôi làm:
$ gprof -q ./train-test gmon.out
Ở đây, đầu ra chương trình gọi đồ thị của hàm trong tàu kiểm tra nhưng không phải trong libtrain.so
gì có thể là vấn đề?
Lưu ý đáng chú ý là thường bạn có thể tìm ra tên của thư viện mà nhị phân của bạn đang cố gắng tải (mylib.so vs mylib.so.1 so với mylib.so.1.1 etc) bằng cách chạy 'ldd' trên ứng dụng . Điều này chỉ nên không có một mục nếu thư viện được mở thông qua một cuộc gọi dlopen trực tiếp. –
lỗi quá xấu bị lỗi nghiêm trọng, như trong [câu hỏi này] (http://stackoverflow.com/questions/6216979/what-is-causing-sprof-to-complain-about-inconsistency-detected-by-ld-so) –
Nếu sprof không đi kèm với MinGW, trình biên dịch được chọn cho dự án của tôi thì sao? – Charles