2015-09-17 18 views
8

Tôi đã đọc về Vệ sinh thời gian trong Apple docs trong Xcode 7 mới, vì vậy tôi đã tìm kiếm và thấy rằng nó đã bị vô hiệu hóa. Tôi đang sử dụng hạt giống GM Xcode 7.Tại sao "Bật trình dọn dẹp địa chỉ" bị tắt trong Xcode 7?

Khi tôi đi vào hành động Run của chương trình> Chẩn đoán tab, tùy chọn Enable Address Sanitizer bị vô hiệu hóa:

enter image description here

Có một số lời giải thích về cách thức khác tùy chọn được disbled, nhưng không đề cập đến lý do tại sao tùy chọn vệ sinh sẽ bị vô hiệu hóa:

Một số công cụ chẩn đoán có thể được sử dụng kết hợp với các công cụ khác; các tùy chọn có sẵn trên ngăn Chẩn đoán được bật và tắt vì các tùy chọn khác nhau được chọn để giúp bạn chọn các kết hợp tùy chọn. Ví dụ, cho phép khử trùng địa chỉ, và các công cụ tương thích khác bị vô hiệu hóa và không thể chọn

Nhìn vào Clang 3.8 documentation for Addresssanitizer, có vẻ như nó cũng có thể được kích hoạt, bằng cách thêm một lá cờ: -fsanitize=address. Nhưng nơi mà cờ này nên được sử dụng trong các thiết lập xây dựng là một bí ẩn, và có vấn đề vì nó cũng tồn tại như một tùy chọn hộp kiểm trong lược đồ.

Cũng tìm thấy SO answer này, nhưng nó là khá phức tạp, và có lẽ đã lỗi thời, vì nó đã trở lại trong năm 2013.

Trả lời

9

Bạn hiện không thể sử dụng Guard Malloc và Địa chỉ Sanitizer với nhau. Chọn hộp kiểm Enable Guard Malloc sẽ vô hiệu hóa hộp kiểm Enable Address Sanitizer. Bỏ chọn hộp kiểm Enable Guard Malloc nếu bạn muốn sử dụng Address Sanitizer.

+0

Tôi đã chọn 'Enable Guard Malloc', và không nghĩ đến việc bỏ chọn nó. Cảm ơn! – Sheamus

+2

Bật một trong các tùy chọn sau ngăn cản việc sử dụng Trình dọn dẹp địa chỉ: Bật tính năng Malloc Scribble, Kích hoạt tính năng bảo vệ Malloc Guard, Kích hoạt Guardoc Malloc và Malloc Stack. Tất cả các tùy chọn này nên được bỏ chọn để có thể kích hoạt Trình vệ sinh địa chỉ. – Dalzhim

+0

Tại sao lại như vậy? – jcanizales

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