2016-01-21 3 views
2

Я вижу segfault от использования NSLog и, в частности, он находится на 64-битном устройстве с SEGV_ACCERR. Я новичок в iOS, поэтому я немного смущен.Segfault от NSLog?

Вот трассировки стека:

Exception Type: SIGSEGV 
Exception Codes: SEGV_ACCERR at 0x108074000 
Crashed Thread: 0 

Thread 0 Crashed: 
0 libsystem_platform.dylib    0x00000001826ea31c _platform_memmove + 300 
1 libsystem_asl.dylib     0x00000001825289a4 asl_string_append_no_encoding_len + 92 
2 libsystem_asl.dylib     0x0000000182522fc8 asl_string_new + 108 
3 libsystem_asl.dylib     0x0000000182522df4 asl_msg_to_string_raw + 68 
4 libsystem_asl.dylib     0x00000001825228dc _asl_send_message + 828 
5 libsystem_asl.dylib     0x00000001825224fc asl_send + 8 
6 CoreFoundation      0x0000000182a6fa1c __CFLogCString + 568 
7 CoreFoundation      0x0000000182a6f7ac _CFLogvEx2 + 300 
8 CoreFoundation      0x0000000182a6fc14 _CFLogvEx3 + 152 
9 Foundation       0x0000000183435dd8 _NSLogv + 128 
10 Foundation       0x000000018336ae04 NSLog + 28 

Вот код, который вызывает это:

NSString *truncated = [NSString stringWithUTF8String:buffer]; 
    // Using original NSLog to print. 
    #undef NSLog 
      NSLog(@"%@", truncated); 

и он выходит из строя из моего NSLog вызова.

где buffer - всего лишь буфер символов.

Мои вопросы конкретно являются:

  1. ли возможно даже врезаться с помощью Apple, при условии NSLog? Или моя трассировка стека неправильна?
  2. Что означает SEG_ACCERR в этом контексте?
  3. Как я могу найти, если это было вызвано плохой проблемой памяти или нет?
  4. Что-то взорвалось в asl-файле под несколькими потоками?
  5. Как подойти к отладке?

Любая помощь была бы принята с благодарностью! Благодаря!

+0

Возможно, буфер недействителен, например, не UTF8. – Justlike

ответ

0

Вы говорите, что буфер является буфером символов. Если это так, то вы должны инициализировать строку, как этот

NSString * укороченный = [[NSString Alloc] initWithBytes: буферный длина: Len NSUTF8StringEncoding];

где len - длина символов в буфере.