Tôi đang phát triển ứng dụng C++ 64 bit được liên kết tĩnh trên CentOS 5.8 64 bit bằng gói gcc 4.4 chuẩn từ kho lưu trữ CentOS. Dường như nó đang sử dụng nhiều bộ nhớ hơn tôi mong đợi, vì vậy tôi đã thử sử dụng khối lượng để cấu hình mức sử dụng bộ nhớ. Tôi đã biên soạn với các thông tin gỡ lỗi và sau đó chạyCông cụ khối lượng của Valgrind sẽ không hồ sơ ứng dụng của tôi
valgrind --tool = Massif ./MyProg
từ thư mục nơi MyProg cư trú. Nó không bao giờ tạo ra bất kỳ kết quả nào khác ngoài ví dụ massif.out.XXXX sau đây.
desc: (none)
cmd: ./MyProg
time_unit: i
#-----------
snapshot=0
#-----------
time=0
mem_heap_B=0
mem_heap_extra_B=0
mem_stacks_B=0
heap_tree=empty
Lưu ý rằng toàn bộ nội dung của tệp và chương trình của tôi có thể chạy trong nhiều phút.
Tôi đã thử các tùy chọn khác nhau để valgrind và massif không có kết quả. Tôi thậm chí đã cố gắng sử dụng đường dẫn tuyệt đối để MyProg, chỉ trong trường hợp. Tôi đã thử tải phiên bản ổn định gần đây nhất của valgrind (3.8.1) và biên dịch và chạy (kể từ CentOS đang sử dụng 3.5.0) với cùng một kết quả. Là một kiểm tra sanity Tôi chạy
valgrind --tool = ls -l khối núi
và nó tạo ra nhiều bức ảnh chụp với việc sử dụng khác không nhớ như mong đợi.
Tôi đã thử tìm kiếm trực tuyến bằng mọi kết hợp từ khóa tôi có thể nghĩ đến nhưng không tìm thấy bất kỳ vấn đề tương tự nào.
Là một lưu ý phụ, tôi có thể cấu hình thành công ứng dụng bằng cách sử dụng công cụ memcheck mặc định của valgrind, trong trường hợp đó là thông tin hữu ích.
Có ai biết tại sao khối lượng không thể lập hồ sơ ứng dụng của tôi không?
Chương trình của bạn có được liên kết tĩnh không? Nếu bạn làm một 'ldd ./MyProg', nó có liệt kê một loạt các thư viện được chia sẻ, hay nó không in được gì? –
Nó được liên kết tĩnh. Tôi đã chỉnh sửa câu hỏi để làm rõ điều này. – Tyson