2009-12-10 37 views
7

Trên Linux, FreeBSD và các hệ thống khác, tôi có valgrind để kiểm tra lỗi bộ nhớ như số lần đọc không hợp lệ và tương tự. Tôi thực sự yêu valgrind. Bây giờ tôi phải kiểm tra mã trên Solaris/OpenSolaris và không thể tìm thấy một cách để có được thông tin về đọc/viết không hợp lệ theo cách tốt đẹp (hoặc tốt hơn ;-)) như là valgrind ở đó.Xác định quyền truy cập bộ nhớ xấu trên Solaris

Khi tìm kiếm này trên mạng tôi tìm tài liệu tham khảo để libumem, nhưng tôi chỉ nhận được báo cáo về rò rỉ bộ nhớ ở đó, không truy cập không hợp lệ. Tôi đang thiếu gì?

Trả lời

6

Các dbx kèm với trình biên dịch Sun Studio bao gồm truy cập bộ nhớ kiểm tra hỗ trợ trong "Run Time Kiểm tra" tính năng của nó (check subcommand). Xem:

Các liên quan "Sun Memory Lỗi Discovery Tool" cũng có sẵn từ http://cooltools.sunsource.net/discover/

+0

hm, tôi đã ở đó và quên nó ... chơi với trình bao bọc bcheck bây giờ và cố gắng để có được nó trong bộ thử nghiệm tự động của tôi. – johannes

+0

Bây giờ cũng có một [cổng thử nghiệm/một phần valgrind cho Solaris] (https://bitbucket.org/setupji/valgrind-solaris) được thực hiện bởi một sinh viên như là một phần của [dự án luận văn thạc sĩ] của họ (https://dip.felk.cvut.cz/browse/pdfcache/pavlupe1_2012dipl.pdf). – alanc

1

watchmalloc là một thư viện khá hữu ích mà có thể được tự động nạp cho chương trình của bạn (thường là không cần phải biên dịch lại) và sau đó đặt watchpoints ở tất cả các vị trí nhớ thường có vấn đề, như các vùng giải phóng hoặc sau khi một khối bộ nhớ được phân bổ. Nếu chương trình của bạn truy cập vào một trong những khu vực không hợp lệ này, nó nhận được tín hiệu và bạn có thể kiểm tra nó trong trình gỡ lỗi.

Tùy thuộc vào các khu vực có vấn đề về cấu hình có thể được xem chỉ để viết, hoặc cũng có thể đọc.

1

Kể từ phiên bản 3.11.0, Valgrind làm chạy trên Solaris. Xem Release NotesSupported Platforms.

Chính xác hơn, x86/Solarisamd64/Solaris hiện đang hỗ trợ. Hỗ trợ cho sparc/Solaris vẫn đang hoạt động.

+0

Chỉ cần đề cập đến, bạn phải có ít nhất Solaris 11. Đặc biệt, Solaris 10.X không được hỗ trợ. – marol

Các vấn đề liên quan