Nó hiện đang làm việc cho chỉ Linux. DBGMEM được phát hành theo các điều khoản của Giấy phép Công cộng GNU Lesser
Công cụ này sẽ giúp bạn tìm thấy những vấn đề như
& Nbsp; 1. rò rỉ bộ nhớ
& Nbsp; 2. tham nhũng bộ nhớ heap
& Nbsp; 3. Sử dụng sai, lập luận bất hợp pháp vào các chức năng thư viện chuẩn được lựa chọn.
& Nbsp; 4. ngăn xếp tham nhũng
& Nbsp; 5. Sử dụng bộ nhớ heap giải thoát hay chưa được khởi động.
& Nbsp; 6. Cho phép bạn mở rộng các công cụ, kiểm tra đối số API của
Công cụ này sẽ ghi đè chức năng cấp phát bộ nhớ glibc, bộ nhớ và các chức năng thao tác chuỗi để thêm các tính năng của nó.
DBGMEM không yêu cầu bất kỳ thay đổi chương trình của bạn, mặc dù bạn có thể muốn thay đổi chương trình của bạn để sử dụng một số tính năng tiên tiến.
DBGMEM là một trình gỡ lỗi bộ nhớ mã nguồn mở cho C và C ++ chương trình và chạy dưới hệ điều hành Linux, và được phát hành theo Giấy phép Công cộng GNU Lesser. DBGMEM thêm kiểm tra gỡ lỗi cho các bộ phận của các Gilbc tiêu chuẩn thư viện; nó được thực hiện như các thư viện chia sẻ được nạp vào không gian địa chỉ của quá trình sửa lỗi.
Công cụ
DBGMEM có một số công cụ gỡ lỗi bộ nhớ, mỗi lần có thể được nạp vào chương trình sửa lỗi; Các công cụ đơn giản theo dõi tất cả các khối bộ nhớ được phân bổ, và cho biết thêm thông tin cuốn sách toán, chẳng hạn như ngăn xếp thời khi khối được phân bổ, vào một tiêu đề đấu trường mà trước khối bộ nhớ được phân bổ; nó cũng cho biết thêm một từ vệ trước và sau khi các khối được phân bổ; Các công cụ đơn giản nhất để sử dụng để phát hiện các vấn đề rò rỉ bộ nhớ; như tiêu đề đấu trường có thể bị hỏng bởi các chương trình đang được sửa lỗi. Việc kiểm tra đã giữ tất cả các thông tin sách gìn giữ khỏi ngăn xếp trong một tập tin bộ nhớ-ánh xạ vô danh; điều này làm cho các công cụ mạnh mẽ hơn để chịu được bộ nhớ ghi đè lỗi. Các công cụ kiểm tra cũng cho biết thêm khả năng để nhanh chóng tìm kiếm thông tin về bất kỳ khối heap cho một giá trị con trỏ chứa trong đó khối đống; công cụ kiểm tra xác nhận thêm các thông số để chuỗi chung và chức năng thao tác bộ nhớ, và kiểm tra để có thể ngăn xếp đập bởi các chức năng này.
Chế độ hoạt động
Bạn có thể chạy hầu hết các chương trình với các trình gỡ lỗi như là; công cụ không yêu cầu các chương trình sửa lỗi để được liên kết với bất kỳ thư viện cụ thể; Công cụ này là một thư viện chia sẻ đó là nạp vào không gian địa chỉ của quá trình đó được kiểm tra bằng các phương tiện kỹ thuật của DLL Injection. Các tính năng LD_PRELOAD của các mối liên kết động được sử dụng để tải các thư viện công cụ chia sẻ đầu tiên, trước khi bất kỳ thư viện khác được nạp; cấp phát bộ nhớ và chức năng thao tác chuỗi được chặn và lần đầu tiên được gọi là từ các thư viện công cụ; điều này cho phép các công cụ để thêm kiểm tra của mình. Trong thời gian chạy của quá trình sửa lỗi một báo cáo nguyên được viết đó là tiếp tục xử lý sau khi kết thúc giai đoạn sửa lỗi; báo cáo tăng cường thêm chức năng tên tượng trưng để ngăn xếp dấu vết có trong báo cáo thô. Các gdb debugger được sử dụng để chuyển các địa chỉ số thành địa chỉ mang tính biểu tượng trong quá trình xử lý tiếp theo của báo cáo nguyên
Tính năng .
- rò rỉ bộ nhớ ; này áp dụng cho cả các công cụ kiểm tra và các công cụ đơn giản. Công cụ này theo dõi từng khối đống phân bổ cùng với chồng chụp ở thời điểm khi khối được phân bổ dấu vết; bổ sung một số nguyên tag được giữ với mỗi phân bổ, giá trị này theo dõi một thời gian hợp lý / `thế hệ", đặc trưng của thời gian khi khối đã được phân bổ. Một báo cáo của các thông tin này luôn được sản xuất trên quy trình xuất cảnh, hoặc khi có yêu cầu của người sử dụng. Thông tin này sẽ giúp tìm trường và nguyên nhân rò rỉ bộ nhớ.
- Sử dụng bộ nhớ heap không được khởi tạo hoặc bộ nhớ heap giải thoát; này áp dụng cho cả các công cụ kiểm tra và các công cụ đơn giản. Công cụ này thiết lập tất cả bộ nhớ vừa được phân bổ cho giá trị byte 0xDD và tất cả các bộ nhớ được giải phóng với giá trị byte 0xEE; sử dụng những giá trị này thường dẫn đến chương trình lỗi, nếu vùng nhớ này chứa một con trỏ, sau đó dereferencing của một con trỏ có giá trị 0xDDDDDDDD sẽ dẫn đến một vụ tai nạn.
- Heap tham nhũng bộ nhớ; này áp dụng cho cả các công cụ kiểm tra và các công cụ đơn giản. Các công cụ kiểm tra bộ nhớ ghi đè và underwrites bằng cách đặt một tiền tố và hậu tố bộ nhớ trên mỗi khối đống; nếu giá trị của các hậu tố được thay đổi sau đó một lần ghi chèn đống / bảo lãnh được phát hiện.
- Điều này áp dụng đối với các "công cụ kiểm tra '' '' 'chỉ; Lạm dụng các chức năng thao tác chuỗi của glibc và bản sao bộ nhớ / chức năng di chuyển của glibc; ngăn xếp tham nhũng bằng những chức năng kiểm tra công cụ được một đường chuyền đầu tiên về chức năng tiêu chuẩn thư viện phổ biến, nó được kiểm tra rằng các chức năng sẽ không ghi đè lên một khối lập luận heap hiện có; nó cũng được kiểm tra rằng ngăn xếp của thread gọi sẽ không bị hỏng.
là gì mới trong phiên bản này:
- làm bây giờ được biến môi trường CFLAGS
- xây dựng dbgmem thư viện với tùy chọn -ldl
- thư viện chia sẻ với doanh nghiệp được đặt vào lib / $ (uname -r) thư mục, như glibc kết hôn với các phiên bản hạt nhân.
- sửa chữa biên dịch trên một số hệ thống (bước cấu hình)
- thêm tùy chọn để chạy script (-m - tạo ngăn xếp chỉ dấu vết cho một số thế hệ)
là gì mới trong phiên bản 1.9.1:
- làm cho kịch bản cập nhật, nó bây giờ cố gắng để phát hiện yêu cầu thiết lập được xây dựng; vẫn không phải bây giờ làm thế nào để làm automake dù
- Lỗi biên dịch ở chế độ C cho gcc 2.9.6 cố định; gcc vẫn còn treo với lỗi nội bộ về C ++ chế độ xây dựng
- thêm tùy chọn -g (vô hiệu hoá kiểm tra cho kết nối của malloc / mới / mới [] và miễn phí / xóa / delete [] trong C ++ mode)
là gì mới trong phiên bản 1.7:
- tùy chọn -F theo fork và exec cuộc gọi (như trong thêm ngã ba / exec)
- bây giờ in ra các dòng lệnh của quá trình sửa lỗi trong phần đầu của file báo cáo.
- bản đồ tên tập tin hiện nay bao gồm pid.
- xóa các tập tin báo cáo nguyên theo mặc định; có quá nhiều người trong số họ;
- tất cả các công dụng của sprintf đổi snprintf
Bình luận không