Tôi muốn kiểm tra một quá trình chạy bộ nhớ bị rò rỉ lâu dài với valgrind. Tôi nghi ngờ rò rỉ bộ nhớ tôi sau khi có thể xảy ra chỉ sau vài giờ thi hành. Tôi có thể chạy các ứng dụng dưới valgrind và nhận được valgrind đăng nhập tốt, nhưng làm như vậy có nghĩa là tôi phải thoát khỏi ứng dụng và bắt đầu lại một lần nữa cho một phiên valgrind mới mà tôi vẫn sẽ phải chờ vài giờ. Có thể giữ valgrind và ứng dụng đang chạy và vẫn nhận được dữ liệu (một phần) của valgrind tại bất kỳ thời điểm nào trong quá trình thực hiện không?Có thể valgrind xuất báo cáo một phần mà không cần phải thoát khỏi ứng dụng được lược tả?
5
A
Trả lời
8
Bạn có thể làm điều đó bằng cách sử dụng Valgrind gdbserver and GDB.
Nói tóm lại, bạn bắt đầu chương trình của bạn với valgrind như thường lệ, nhưng với sự --vgdb=yes
switch:
$ valgrind --tool=memcheck --vgdb=yes ./a.out
Trong phiên khác, bạn bắt đầu gdb trên cùng một thực thi, và kết nối với valgrind. Sau đó, bạn có thể ra lệnh valgrind:
$ gdb ./a.out
...
(gdb) target remote | vgdb
....
(gdb) monitor leak_check full reachable any
==8677== 32 bytes in 1 blocks are definitely lost in loss record 1 of 2
==8677== at 0x4C28E3D: malloc (vg_replace_malloc.c:263)
==8677== by 0x400591: foo (in /home/me/tmp/a.out)
==8677== by 0x4005A7: main (in /home/me/tmp/a.out)
==8677==
==8677== 32 bytes in 1 blocks are definitely lost in loss record 2 of 2
==8677== at 0x4C28E3D: malloc (vg_replace_malloc.c:263)
==8677== by 0x400591: foo (in /home/me/tmp/a.out)
==8677== by 0x4005AC: main (in /home/me/tmp/a.out)
==8677==
==8677== LEAK SUMMARY:
==8677== definitely lost: 64 bytes in 2 blocks
==8677== indirectly lost: 0 bytes in 0 blocks
==8677== possibly lost: 0 bytes in 0 blocks
==8677== still reachable: 0 bytes in 0 blocks
==8677== suppressed: 0 bytes in 0 blocks
==8677==
(gdb)
Xem sách hướng dẫn để biết danh sách lệnh, here để ghi nhớ.
Các vấn đề liên quan
- 1. Pha lê báo cáo lỗi trong asp.net vb mà không có báo cáo tinh thể cần
- 2. Tôi có cần phải thoát khỏi đầu vào DB không?
- 3. Làm thế nào để thoát khỏi một phương pháp mà không cần thoát khỏi chương trình?
- 4. Tôi có thể chặn báo cáo công việc LSF mà không cần gửi thư không?
- 5. Đóng tệp mà không thoát khỏi ứng dụng VIM?
- 6. Chỉnh sửa tệp báo cáo tinh thể mà không cần phần mềm Crystal Report
- 7. Mục tiêu C: Gửi email mà không cần thoát khỏi ứng dụng
- 8. Ứng dụng sự kiện Application.ApplicationExit có được thông báo về thoát trong các ứng dụng không phải là Winforms không?
- 9. Vala có thể được sử dụng mà không cần GObject?
- 10. In báo cáo Jasper mà không cần trang
- 11. gdb: thoát khỏi chương trình mà không thoát khỏi gdb
- 12. Valgrind báo cáo 'có thể mất' bộ nhớ khi làm việc với chủ đề Boost
- 13. Khi nào tôi cần phải thoát khỏi metacharectar? (jQuery Selectors)
- 14. XSD - Cách mô tả một tập hợp các loại phần tử không có thứ tự mà phần tử đầu tiên phải xuất hiện đầu tiên trong chuỗi?
- 15. Cần thiết để thoát khỏi HandlerThread?
- 16. Tôi có cần phải thoát khỏi các ký tự khi gửi email không?
- 17. Lỗi Visual Studio 2010 khi lược tả, sau khi phân tích báo cáo
- 18. Làm cách nào để thoát khỏi màn hình mà không cần gõ 'thoát'?
- 19. báo giá mô tả meta thoát
- 20. Segfaulting chỉ mà không valgrind
- 21. java swing close window mà không thoát ứng dụng
- 22. Tôi có cần phải thoát khỏi dấu chấm phẩy trong một biểu thức chính quy Perl không?
- 23. Làm thế nào để viết chuỗi ký tự trong python mà không cần phải thoát khỏi chúng?
- 24. Đối tượng email có cần phải được mã HTML không?
- 25. EmberJS: có thể thoát khỏi forEach không?
- 26. Cross Site Scripting (XSS): Tôi có cần phải thoát khỏi dấu và không?
- 27. Ứng dụng nền mà không cần ui
- 28. Chúng tôi có thể nhận được hiệu ứng Flash này gần đến mức nào mà không cần sử dụng Flash?
- 29. Cách tốt nhất để thoát khỏi chương trình một cách duyên dáng mà không cần sử dụng pkill
- 30. Cần phải thoát khỏi iframe sau khi nội dung trong iframe được gửi