Как я отлаживаю с NSLog (“В iPhone Simulator”)?

Я привык программировать и иметь сообщения журнала быть видимым. Я знаю, что Вы раньше могли использовать NSLog() прослеживать сообщения при отладке приложений Какао. Что лучший способ состоит в том, чтобы "проследить" сообщения при кодировании в среде разработки iPhone Xcode?

55
задан Peter Mortensen 23 October 2011 в 12:19
поделиться

3 ответа

Существует намного более удобный способ проследить с сообщениями журнала в XCode, и это использует Действия Точки останова.

На строке кода, где Вы испытали бы желание добавить printf или NSLog, установите точку останова, затем щелчок управления он и выберите "Edit Breakpoint". В синем пузыре, который появляется, нажмите + кнопка на праве открыть Breakpoint Actions: сопроводительный текст http://idisk.mac.com/cdespinosa/Public/Breakpoint%20Actions.png

Вводит Ваш текст журнала там. Любое выражение, которое может быть распечатано в Отладчике, может использоваться при разграничивании знаки.

Для отладки Objective C обычно более полезно выбрать "Debugger Command" из всплывающего окна и войти 'почтовый [[метод объекта] метод]' для печати строки описания объекта Objective C или результата вызова метода.

Удостоверяются, что нажали флажок "Continue" на верхнее правое, таким образом, выполнение продолжается после журнала.

Преимущества этого по NSLog и printf:

  • Это является динамическим. Вы не должны перекомпилировать и перезапустить, чтобы добавить или отредактировать сообщения журнала. Это сохраняет Вас много времени.
  • можно выборочно включить и отключить их. Если Вы изучаете достаточно от одного, но извергать вмешивается, просто снимите его флажок Enabled.
  • Весь вывод сгенерирован на Вашем Mac, никогда на iPhone, таким образом, Вы не должны загрузить и проанализировать через журналы после факта.
  • шанс поставлющейся консоли извергает в Вашем приложении, значительно уменьшен.

Также проверяют кнопку Speak; замечательно для отладки полноэкранных приложений, где Вы не видите, что отладка регистрируется.

214
ответ дан cdespinosa 26 November 2019 в 17:36
поделиться

В моем проекте у меня есть специализированное решение на основе DebugOutput.m, Это добавляет файл & номер строки к выводу отладки, помогая определить, куда тот синтезируемый текст прибывает из, все еще сохраняя это кратким.

я увеличил стандартное решение с маской отладки, так, чтобы я мог включить и выключить отладку для конкретных областей функциональности в моем приложении. В Debug.h я имею

typedef enum {
kDebugMaskAp- = 1,
kDebugMaskXMLParser = 1 << 1,
kDebugMaskNetwork = 1 << 2,
kDebugMaskAnalytics = 1 << 3,
kDebugMaskCache = 1 << 4,
} debugBitMask;

#define debugForComponent(mask,format,...) if( currentDebugMask() & mask) [[DebugOutput sharedDebug]  output:__FILE__ lineNumber:__LINE__ input:(format), ##__VA_ARGS__]

И в Debug.m

-(void)output:(char*)fileName lineNumber:(int)lineNumber input:(NSString*)input, ...
{
  va_list argList;
  NSString *filePath, *formatStr;

  // Build the path string
  filePath = [[NSString alloc] initWithBytes:fileName length:strlen(fileName) encoding:NSUTF8StringEncoding];

  // Process arguments, resulting in a format string
  va_start(argList, input);
  formatStr = [[NSString alloc] initWithFormat:input arguments:argList];
  va_end(argList);

  // Call NSLog, prepending the filename and line number
  NSLog(@"File:%s Line:%d %@",[((DEBUG_SHOW_FULLPATH) ? filePath : [filePath lastPathComponent]) UTF8String], lineNumber, formatStr);

  [filePath release];
  [formatStr release];
}

В приложении, вызовы выглядят примерно так:

debugForComponent(kDebugMaskApp,@"Request failed - error %@", [error localizedDescription]);
5
ответ дан Jane Sales 26 November 2019 в 17:36
поделиться

Я просто использую замену вся функциональность....

я отключаю все свои операторы NSLog путем замены NSLog (" с//*** NSLog ("

Тот способ, которым я могу просто найти его (использование находят во всех файлах проекта) с//*** NSLog (" и повторно включите им

, Ничто не полагает, но он работает:)

-2
ответ дан fbrereto 26 November 2019 в 17:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: