Khi tôi sử dụng valgrind để giúp gỡ lỗi một ứng dụng tôi đã làm việc trên tôi nhận thấy một lớn về tiếng ồn mà dường như là phàn nàn về thư viện chuẩn. Như một thử nghiệm tôi đã làm điều này;Valgrind 'tiếng ồn', có nghĩa là gì?
echo 'int main() {return 0;}' | gcc -x c -o test -
Sau đó, tôi đã thực hiện việc này;
valgrind ./test
==1096== Use of uninitialised value of size 8
==1096== at 0x400A202: _dl_new_object (in /lib64/ld-2.10.1.so)
==1096== by 0x400607F: _dl_map_object_from_fd (in /lib64/ld-2.10.1.so)
==1096== by 0x4007A2C: _dl_map_object (in /lib64/ld-2.10.1.so)
==1096== by 0x400199A: map_doit (in /lib64/ld-2.10.1.so)
==1096== by 0x400D495: _dl_catch_error (in /lib64/ld-2.10.1.so)
==1096== by 0x400189E: do_preload (in /lib64/ld-2.10.1.so)
==1096== by 0x4003CCD: dl_main (in /lib64/ld-2.10.1.so)
==1096== by 0x401404B: _dl_sysdep_start (in /lib64/ld-2.10.1.so)
==1096== by 0x4001471: _dl_start (in /lib64/ld-2.10.1.so)
==1096== by 0x4000BA7: (within /lib64/ld-2.10.1.so)
* large block of similar snipped *
==1096== Use of uninitialised value of size 8
==1096== at 0x4F35FDD: (within /lib64/libc-2.10.1.so)
==1096== by 0x4F35B11: (within /lib64/libc-2.10.1.so)
==1096== by 0x4A1E61C: _vgnU_freeres (vg_preloaded.c:60)
==1096== by 0x4E5F2E4: __run_exit_handlers (in /lib64/libc-2.10.1.so)
==1096== by 0x4E5F354: exit (in /lib64/libc-2.10.1.so)
==1096== by 0x4E48A2C: (below main) (in /lib64/libc-2.10.1.so)
==1096==
==1096== ERROR SUMMARY: 3819 errors from 298 contexts (suppressed: 876 from 4)
==1096== malloc/free: in use at exit: 0 bytes in 0 blocks.
==1096== malloc/free: 0 allocs, 0 frees, 0 bytes allocated.
==1096== For counts of detected errors, rerun with: -v
==1096== Use --track-origins=yes to see where uninitialised values come from
==1096== All heap blocks were freed -- no leaks are possible.
Bạn có thể xem kết quả đầy đủ ở đây: http://pastebin.com/gcTN8xGp
Tôi có hai câu hỏi; trước tiên là có một cách để ngăn chặn tất cả các tiếng ồn?
--show-below-main được đặt thành không theo mặc định, nhưng dường như không phải là tương đương - sau-chính.
Vấn đề này là sử dụng glibc mới hơn so với những gì Valgrind quen thuộc. 1 để chỉ cho tôi đúng hướng. –