Могут быть и другие причины, которые вызывают это сообщение, но распространенная причина - попытка использовать valgrind для 32-битного исполняемого файла, когда он был скомпилирован для запуска только на 64-битных исполняемых файлах. (MacPorts на момент написания этой статьи делает это на 64-битных ОС). Это не относится к симулятору: попытка valgrind любого 32-битного приложения приведет к этому.
Собственная установка из источника valgrind без дополнительных аргументов для configure
будет работать на 32- или 64-битных исполняемых файлах.
Это не дает мне возможности полностью запустить valgrind в симуляторе. Еще нет ...
Продолжение:
Правильное определение ширины не слишком далеко. Как упоминалось где-то еще, на самом деле требуется портирование valgrind во время выполнения симулятора. Он должен использовать все SDK для платформы так же, как целевое приложение.
Оказывается, это возможно. Не легко, и я не уверен, насколько оно стабильно, но возможно. Я думаю, что поговорю с людьми из valgrind о том, можно ли это как-то очистить и сделать поддерживаемый порт / цель.
Когда это работает, это прекрасно:
char* p = new char[10];
delete p;
*p = 12;
превращается в
==49084== Invalid write of size 1
==49084== at 0x6C536: -[AppDelegate application:didFinishLaunchingWithOptions:] (app_delegate.mm:813)
==49084== ...
==49084== Address 0xc6cca70 is 0 bytes inside a block of size 10 free'd
==49084== at 0xC51041: free (vg_replace_malloc.c:430)
==49084== by 0x6C52F: -[AppDelegate application:didFinishLaunchingWithOptions:] (app_delegate.mm:812)
==49084== ...
Красивые символы и номера строк. Замечательно.
Статус:
Я дошел до того, что Вальгринд отразится на dllib от Apple, sqlite3. Я не уверен на 100%, почему, но я думаю, что это потому, что в версии sqlite3 от Apple есть некоторые вызовы машин, которые valgrind не покрывает. Так что я никогда не заставлял его работать в моем приложении. Я поднял тему в списке valgrind, но это не вызвало никакого интереса. Я все еще хотел бы заставить это работать, но это не произойдет слишком рано ... по крайней мере, не мной.
Хммм ... интересно, могу ли я вызвать какой-либо интерес к WWDC ...