Я знаю, что отправлять сообщения нильским объектам в Objective-C вполне нормально. Тем не менее, мне любопытно, есть ли какая-либо поддержка во время выполнения для таких ситуаций. Я вижу, что это полезно в ситуациях тестирования/отладки.Могу ли я получить предупреждения для отправки сообщений об ошибках?
ответ
После небольшого поворота с отладчиком это то, что я узнал.
Вы можете установить точку останова в objc_msgSend
с условием точки останова на первый аргумент равен нулю (приемник):
- Откройте окно «Breakpoints»: Command-Option-B
- Двойной щелчок на последнем ряду, чтобы создать новую символическую точку останова
- Введите символ:
objc_msgSend
- Введите условие в столбце «состояние»:
*(int*)($esp+4) == 0
Когда вы запускаете свой исполняемый файл, он очень часто ломается, так как очень часто отправлять сообщения на нуль. Чтобы получить обзор того, что происходит, вы можете дополнительно настроить свою точку останова:
- Нажмите кнопку «плюс», чтобы добавить команду останова.
- Выберите «Команда отладчика» из всплывающего окна.
- Введите
p (char*)*(int*)($esp+8)
в поле команды - Нажмите «автопродолжение» флажок в точке прерывания строки (одна с маленькой стрелкой в последней колонке)
Когда теперь продолжить выполнение, вы будете см. все имена сообщений (отправленных на нуль) в консоли отладчика.
Все вышеперечисленное работает только на Intel Mac (32-битное какао или какао-Touch в симуляторе). Архитектура PPC или ARM использует другие имена регистров и соглашения о вызовах. Я оставляю это как упражнение для вас, чтобы узнать, как получить эту работу на этих платформах;)
В качестве альтернативы, вы можете использовать DTrace:
Using dtrace to log traces messages-to-nil
И это может быть done in Instruments тоже.
- 1. Предупреждения об ошибках CodeIgniter?
- 2. JQuery Pop-Up для сообщений об ошибках?
- 3. Оптимизация сообщений об ошибках
- 4. Переадресация сообщений об ошибках
- 5. IBM MobileFirst 7 - Сообщения об ошибках отправки сообщений не заполнены
- 6. Как я могу предотвратить удаление сообщений об ошибках?
- 7. Получить ленту новостей без сообщений об ошибках
- 8. Улучшение сообщений об ошибках Lua
- 9. Как я могу подавить диалоги сообщений об ошибках Delphi DataSnap?
- 10. Настройка сообщений об ошибках SignalR
- 11. Аварийные предупреждения об ошибках 4.2
- 12. Получение Eclipse для предупреждения об ошибках производительности
- 13. Ошибки сообщений об ошибках PHP
- 14. Как я могу изменить язык требуемых сообщений об ошибках?
- 15. Отображение стандартных сообщений об ошибках
- 16. Разработка, настройка сообщений об ошибках?
- 17. Чтение сообщений об ошибках сервера для URLLoader
- 18. Предотвращение исключений Laravel Artisan от отправки сообщений об ошибках
- 19. Отображение подробных сообщений об ошибках
- 20. ValidationSummary для сообщений об ошибках проверки отображения
- 21. Настройки php ini для сообщений об ошибках
- 22. Группировка сообщений об ошибках JSF
- 23. Создание стандартизованной коллекции сообщений об ошибках/ошибках
- 24. Визуализация сообщений об ошибках gcc
- 25. Избегайте сообщений об ошибках Zends
- 26. сообщений об ошибках в ASP.Net
- 27. GCC формат сообщений об ошибках
- 28. Parsley.js: Иерархия сообщений об ошибках
- 29. Конфигурация сообщений об ошибках php
- 30. Настройка сообщений об ошибках 403
Я добавил свой блог в свой RSS - отличный материал. – nall
Прохладный. У меня есть больше сообщений в списке задач. Просто нужно найти время. – bbum