0

一部のユーザーから、上記のエラーが発生することがあると報告されました。残念ながら、ログ ファイルからは何もわかりません。おそらくコードのどこかで、オブジェクトが過度に解放されています。どういうわけかそれをキャッチしてログに記録できますか?

通常、Instruments と NSZobieEnabled を使用しますが、残念ながら私のマシンでは発生しません。オブジェクトをログに記録する機会はありますか?

1   ExceptionHandling                   0x00000001000879e2 -[NSExceptionHandler _handleException:mask:] + 168
    2   ExceptionHandling                   0x00000001000877ba NSExceptionHandlerUncaughtSignalHandler + 35
    3   libsystem_c.dylib                   0x00007fff9836d8ea _sigtramp + 26
    4   ???                                 0x0000000001440013 0x0 + 21233683
    5   CoreFoundation                      0x00007fff985b525f -[NSArray initWithArray:range:copyItems:] + 591
    6   AppKit                              0x00007fff94a193f3 recursivelyEncodeInvalidPersistentState + 1118
    7   AppKit                              0x00007fff94a194a6 recursivelyEncodeInvalidPersistentState + 1297
    8   AppKit                              0x00007fff94a194a6 recursivelyEncodeInvalidPersistentState + 1297
    9   AppKit                              0x00007fff94a194a6 recursivelyEncodeInvalidPersistentState + 1297
    10  AppKit                              0x00007fff94a194a6 recursivelyEncodeInvalidPersistentState + 1297
    11  AppKit                              0x00007fff94a178aa -[NSPersistentUIManager flushAllChangesOptionallyWaitingUntilDone:updatingSnapshots:] + 1037
    12  AppKit                              0x00007fff94a17467 -[NSPersistentUIManager flushPersistentStateAndClose:waitingUntilDone:] + 180
    13  AppKit                              0x00007fff94a7eba5 -[NSApplication terminate:] + 1701
    14  AppKit                              0x00007fff94aa357e -[NSApplication _terminateFromSender:askIfShouldTerminate:saveWindows:] + 280
    15  AppKit                              0x00007fff94aad4a2 __52-[NSApplication(NSAppleEventHandling) _handleAEQuit]_block_invoke_0 + 46
    16  libdispatch.dylib                   0x00007fff8bd9af01 _dispatch_call_block_and_release + 15
    17  libdispatch.dylib                   0x00007fff8bd970b6 _dispatch_client_callout + 8
    18  libdispatch.dylib                   0x00007fff8bd9c0c8 _dispatch_main_queue_callback_4CF + 275
    19  CoreFoundation                      0x00007fff985a20fe __CFRunLoopRun + 1614
    20  CoreFoundation                      0x00007fff985a16b2 CFRunLoopRunSpecific + 290
    21  HIToolbox                           0x00007fff93fbf0a4 RunCurrentEventLoopInMode + 209
    22  HIToolbox                           0x00007fff93fbed84 ReceiveNextEventCommon + 166
    23  HIToolbox                           0x00007fff93fbecd3 BlockUntilNextEventMatchingListInMode + 62
    24  AppKit                              0x00007fff94858613 _DPSNextEvent + 685
    25  AppKit                              0x00007fff94857ed2 -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:] + 128
    26  AppKit                              0x00007fff9484f283 -[NSApplication run] + 517
    27  AppKit                              0x00007fff947f3cb6 NSApplicationMain + 869
4

1 に答える 1

2

シグナル 11 は、どこかにセグメンテーション違反があることを意味します...したがって、Objective-C オブジェクト以外の何かに関連している可能性があります。この場合、例外が発生する可能性が高くなります (セグメンテーション違反も発生する可能性があります)。

したがってNSZombieEnabled、ここでは役に立ちません。

C でのシグナル処理について学習してみてください。シグナル 11 ( SIGSEGV ) のハンドラーを定義できるため、いくつかのことをログに記録できます。

(非常に)基本的に:

#include <signal.h>
#include <stdlib.h>

static void __handler( int sig );
static void __handler( int sig )
{
    /* Debug... */

    exit( EXIT_FAILURE );
}

int main( void )
{
    signal( SIGSEGV, __handler );

    return 0;
}
于 2013-03-21T11:05:48.810 に答える