Tôi không biết của một viên đạn ma thuật, nhưng bạn có thể có một cái nhìn tại valgrind/valgrind.h, nó có một số macro hữu ích để làm cho mọi thứ Valgrind nhận thức và thay đổi beha của họ vior nếu chạy dưới Valgrind.
Ví dụ
#ifndef HAVE_VALGRIND_VALGRIND_H
#define RUNNING_ON_VALGRIND 0
#else
#include <valgrind/valgrind.h>
#endif
if (RUNNING_ON_VALGRIND) {
printf("Hello, this is Valgrind instance %d\n", RUNNING_ON_VALGRIND);
/* set debug output annoyingly high */
/* exit after one request */
}
Bạn cũng có thể bọc rằng toàn bộ mớ hỗn độn với NDEBUG
để giữ cho nó ra khỏi sản xuất xây dựng.
Điều đó sẽ giúp bạn không phải lo lắng với máy chủ mỗi khi bạn gỡ lỗi, nó sẽ 'thực hiện' nếu Valgrind được phát hiện. RUNNING_ON_VALGRIND sẽ mở rộng thành thể hiện valgrind hoặc vẫn là 0 nếu không áp dụng.
Đối với phần còn lại (và tôi tưởng tượng bạn đang nhận được rất nhiều tiếng ồn, rất có thể bắt đầu với invalid read of size xx
), bạn có thể áp dụng hệ thống triệt tiêu. Nếu bạn đăng một số đầu ra, nó có thể dễ dàng hơn để đưa ra gợi ý cho các lệnh cấm bạn có thể dính vào một tập tin.
Ngẫu nhiên, danh sách gửi thư của người dùng Valgrind là vô cùng hữu ích và rất khoan dung. Bạn cũng có thể đăng tiếng ồn khó chịu nhất và không thích hợp ở đó, bạn sẽ nhận được câu trả lời bằng cách ngăn chặn nó khá nhanh.
Nếu tất cả những gì bạn muốn là một bản tóm tắt các rò rỉ và các điểm vào dẫn đến chúng, nó không quá khó để đóng hầu hết mọi thứ khác.
Nguồn
2010-02-16 08:36:56
Tôi đã thêm đầu ra valgrind. Có rất nhiều thứ, vài trong số đó là từ mô-đun của tôi. –