2015-10-03 3 views
1

Есть ли способ обнаружить следующий сценарий, который, насколько я знаю, перезаписывает память в плохих местах? Или любой другой, который пытается установить NSDictionary для NSString или что-то в этом роде?Обнаружение памяти перезаписывается с помощью XCode

int a[6]; a[6] = 8

Кроме того, только чтобы убедиться, что я получаю много EXC_BAD_ACCESS KERN_INVALID_ADDRESS в мое приложение и от того, что я видел эти вызваны памяти переписывает. Есть ли другой способ отладки этих сбоев, потому что они не происходят на моих устройствах/симуляторах, а скорее для пользователей в определенных ситуациях, которые я не могу воспроизвести.

+0

Ну, вы могли бы составить с -Weverything -Werror или по крайней мере -Wall -Werror. Затем вы можете попробовать статический анализатор. И тогда появляется все новое дезинфицирующее средство. Дайте им попробовать :) (или используйте Swift: D) ​​ – HAS

ответ

1

Существует!

Посмотрите в панели «Параметры» редактора схем Xcode. Вы можете включить malloc scribble, который поможет несколько. Тем не менее, вы, вероятно, хотите стать страницами охраны. В принципе, он создает незащищенную страницу памяти в начале или в конце распределения. Это приводит к сбою доступа, если вы пытаетесь читать или писать вне границ вашего распределения.

Подробности здесь:

https://developer.apple.com/library/mac/documentation/Performance/Conceptual/ManagingMemory/Articles/MallocDebug.html

+0

Эй, я пробовал с защитой malloc и у меня закончилась нехватка памяти во время отладки. –

+0

Это произойдет. Это взрывает использование памяти. вам потребуется довольно короткий воспроизводимый набор шагов. – bbum

Смежные вопросы