У меня есть контроллер вида, который продолжает перезагружать снова и снова. Я хотел бы видеть, какие методы вызывают, чтобы я мог видеть тот, который продолжает перезагружать. Я знаю, что вижу, что вызвано, если произошла ошибка, и приложение сработает. Однако в этом случае нет сбоя. Есть ли способ отслеживать все методы, вызываемые во всем приложении?Посмотрите, какие методы вызывают в Xcode
ответ
Использование инструментов. Запустите свой код в режиме профилирования и выберите инструмент времени процессора. По мере запуска приложения инструменты собирают информацию о каждом стеке вызовов через регулярные промежутки времени, что позволит вам узнать, что называет. (Используйте параметр «Инвертировать имя звонка», чтобы видеть вызывающих абонентов данной функции.)
Если вы новичок в XCode и Objective C и ищете что-то легкое, и у вас нет большого кода/многих методов, я бы положить:
NSLog(@"%s",__PRETTY_FUNCTION__);
в каждом способе.
Вы не хотите, чтобы все эти журналы заканчивались в конечном приложении Apple. – rmaddy
@rmaddy вы можете установить журнал для режима отладки только – nsgulliver
@rmaddy, Согласитесь, 100%. Вот почему я задал свой вопрос условиями. – Spectravideo328
Я использую этот макрос:
#define DEBUG 1
#if DEBUG
# define NLog(fmt, ...) printf("%s\n", [[NSString stringWithFormat:@"%s:%d %@", __PRETTY_FUNCTION__, __LINE__, [NSString stringWithFormat:fmt, ##__VA_ARGS__]] UTF8String])
#else
# define NLog(...)
#endif
Тогда я включаю мой Macros.h в моем файле Application_Prefix.pch, так что он доступен везде. Перед отправкой я установил DEBUG в 0, чтобы все NLogs исчезли.
Итак, вместо использования NSLog я использую NLog. Результат выглядит примерно так:
-[ApplicationDelegate applicationDidBecomeActive:]:86 applicationDidBecomeActive called!
Это решение было основано на этих ранних сообщений:
- How to print out the method name and line number and conditionally disable NSLog?
- Do I need to disable NSLog before release Application?
Вы можете просто поместить NLog звонки в нескольких местах , чтобы увидеть, какие функции вызываются прямо перед перезагрузкой контроллера. Если вам нужно знать точную функцию, вызвавшую перезагрузку, лучшим выбором было бы разместить точку останова и проверить стек вызовов, как упомянули другие.
- 1. Посмотрите, какие функции расширения хром вызывают
- 2. Какие методы вызывают после FragmentTransaction
- 3. Какие методы PDO вызывают исключения?
- 4. Какие методы внутренне вызывают GetHashCode?
- 5. Как узнать, какие методы вызывают в java?
- 6. Как определить, какие методы вызывают в методе?
- 7. Какие методы Android вызывают, когда батарея умирает?
- 8. Посмотрите, какие методы/функции возвращают определенный объект в Visual Studio
- 9. Посмотрите, какие общие методы S3 доступны в среде
- 10. Какие методы вызывают изменения в шкафу tokyo в настройке мультисервиса?
- 11. Посмотрите, какие проблемы изменились.
- 12. Какие инструменты доступны для визуализации того, какие методы вызывают другие методы для Java-кода?
- 13. UICollectionView.reloadData() не вызывают методы UICollectionDataSource
- 14. Как методы SignalR C# вызывают
- 15. Как узнать, какие методы вызывают при отладке приложения
- 16. Как определить, какие методы OpenGL вызывают резервную копию программного обеспечения?
- 17. Какие методы вызывают, когда стековый вид автоматически обновляется
- 18. Какие методы вызывают `foo <bar <baz`?
- 19. Mockito.verify селективные методы вызывают
- 20. Какие функции вызывают Control.ShouldSerializeVisible
- 21. Какие функции вызывают в Javascript
- 22. Посмотрите, какие вызовы вызывает приложение?
- 23. Методы, которые вызывают методы: основы Autorelease?
- 24. PowerMock, где статические методы вызывают статические методы
- 25. Как методы протокола в iOS автоматически вызывают?
- 26. Посмотрите, какой метод вызывается - xcode
- 27. вызывают методы родительской активности - BLE
- 28. Какие события вызывают перерегистрацию GCM?
- 29. Как узнать, какие функции вызывают?
- 30. Android Посмотреть методы вызывают заказ
просто поместите 'NSLog (« метод называется »);' в методах и он будет делать цель – nsgulliver
Поместите контрольную точку в общей близости метода перезагрузки (или даже в ней), чтобы получить трассировку стека в Xcode. – CodaFi
Используйте отладчик и установите точку останова на методе, который вы хотите проверить. Когда код достигнет этой точки, выполнение остановится. Посмотрите на трассировку стека в отладчике, чтобы узнать, кто ее назвал. – rmaddy