Рассмотрение этого было отмечено со "взламыванием", я подозреваю "переполнение стека", к которому он обращается, переполнение стека вызовов, а не высокоуровневое переполнение стека, такое как те, на которых ссылаются в большинстве других ответов здесь. Это действительно не относится ни к каким управляемым или интерпретируемым средам, таким как.NET, Java, Python, Perl, PHP, и т.д., в котором обычно пишутся веб-приложения, таким образом, Ваш единственный риск является самим веб-сервером, который, вероятно, записан в C или C++.
Выезд этот поток:
https://stackoverflow.com/questions/7308/what-is-a-good-starting-point-for-learning-buffer-overflow
Я нашел ответ, но я думаю, что должен быть «лучший» способ?
В конфигурации сборки для пакета Unit Tests вы можете указать Bundle Loader ( BUNDLE_LOADER
) параметр, указывающий на ваше «хост-приложение».
${TARGET_BUILD_DIR}/AppName.app/AppName
Пакет модульных тестов создается как зависимость от цели модульного тестирования вашего приложения (скажем, AppName Testing
), и в результате мне не удалось разрешить исполняемый файл приложения лучше, чем указано выше.
Конечный результат - это рабочий модульный тест, введенный в цель тестирования без каких-либо ошибок компоновщика. Тесты запускаются и получают доступ к классам, как ожидалось.
РЕДАКТИРОВАТЬ: Bundle Loader - Target Configuration
Важно настроить цель, которая является «хостингом» пакет тестирования не скрывает символы.
GCC_SYMBOLS_PRIVATE_EXTERN = NO
он же «Символы, скрытые по умолчанию». Из документации:
При включении все символы объявляются
"частный внешний"
, если явно не указано иное помечены для экспорта с помощью'__ attribute __ ((visibility ("default")))'
в коде. Если не включен, все символы экспортируются, если явно не отмечены как'private extern'
.Для получения дополнительной информации см. http://developer.apple.com/documentation/DeveloperTools/Conceptual/CppRuntimeEnv/Articles/SymbolVisibility.html .
Я только что ответил на это здесь:
Юнит-тестирование iPhone: Символы не найдены при вызове пользовательского кода
Я полагаю, что одна из этих тем должна быть закрыта как дубликат? Я не достаточно авторитетен, чтобы сделать это...
Я также следовал документу Apple "Приложения для модульного тестирования iPhone" и при попытке модульного тестирования одного из моих классов увидел ошибку связывания, похожую на описанную в вопросе.
Похоже, что любой класс, на который ссылается класс вашего модульного теста и который запускается из тестовой цели, также должен быть добавлен в эту тестовую цель. Для этого щелкните правой кнопкой мыши на классе RootViewController и нажмите 'Get Info' (сочетание клавиш Cmd-i). На панели целей убедитесь, что ваша цель модульного теста (например, 'LogicTests', если вы следовали именованию в этом документе) отмечена.
Теперь этот класс будет скомпилирован с вашими тестами и должен быть доступен вашему модульному тесту. Чтобы проверить еще раз, разверните узел 'Targets/LogicTests/Compile Resources' в браузере 'Groups & Files' слева. Здесь перечислены все файлы классов, доступные при сборке цели, и теперь они должны включать ваш класс модульного теста вместе с тестируемым классом.
(Обратите внимание, что вам нужно будет аналогичным образом выбрать все соответствующие цели при создании нового приложения или тестового класса - на той же странице окна 'New File...', когда вы присваиваете имя файлу).
(Кстати, я использую XCode 3.2.3 и OS 4.0).