4

はい、アプリの1つでクラッシュレポートを受け取りましたが、100%混乱していることを誓います。

これは、その「コア」部分がどのように見えるかです。

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000100000000-0000000100015000 [   84K] r-x/rwx SM=COW  /Applications/MY_APP/Contents/MacOS/MY_APP

Application Specific Information:
objc[337]: garbage collection is ON

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_c.dylib               0x00007fff90128650 strlen + 16
1   MY_BUNDLE_ID                    0x0000000100008f12 0x100000000 + 36626
2   MY_BUNDLE_ID                    0x000000010000b435 0x100000000 + 46133
3   MY_BUNDLE_ID                    0x0000000100003c90 0x100000000 + 15504
4   com.apple.CoreFoundation        0x00007fff9065147a _CFXNotificationPost + 2554
5   com.apple.Foundation            0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
6   com.apple.AppKit                0x00007fff9a7894a7 -[NSTableView textDidChange:] + 377
7   com.apple.CoreFoundation        0x00007fff9065147a _CFXNotificationPost + 2554
8   com.apple.Foundation            0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
9   com.apple.AppKit                0x00007fff9a15c260 -[NSTextView(NSSharing) didChangeText] + 339
10  com.apple.AppKit                0x00007fff9a7f8381 _NSDoUserReplaceForCharRange + 390
11  com.apple.AppKit                0x00007fff9a7f85b1 _NSDoUserDeleteForCharRange + 38
12  com.apple.AppKit                0x00007fff9a7e1e72 -[NSTextView(NSKeyBindingCommands) deleteBackward:] + 440
13  com.apple.AppKit                0x00007fff9a18a1cc -[NSResponder doCommandBySelector:] + 75
14  com.apple.AppKit                0x00007fff9a18a02e -[NSTextView doCommandBySelector:] + 197
15  com.apple.AppKit                0x00007fff9a20cf4e -[NSKeyBindingManager(NSKeyBindingManager_MultiClients) interpretEventAsCommand:forClient:] + 2200
16  com.apple.AppKit                0x00007fff9a20c3bb -[NSTextInputContext handleEvent:] + 939
17  com.apple.AppKit                0x00007fff9a20bf87 -[NSView interpretKeyEvents:] + 183
18  com.apple.AppKit                0x00007fff9a158f67 -[NSTextView keyDown:] + 723
19  com.apple.AppKit                0x00007fff9a374120 -[NSWindow sendEvent:] + 9687
20  com.apple.AppKit                0x00007fff9a36f744 -[NSApplication sendEvent:] + 5761
21  com.apple.AppKit                0x00007fff9a2852fa -[NSApplication run] + 636
22  com.apple.AppKit                0x00007fff9a229cb6 NSApplicationMain + 869
23  MY_BUNDLE_ID                        0x0000000100002014 0x100000000 + 8212

何がうまくいかないのか分かりますか?それとも、私を正しい方向に向けていただけませんか。


余談として :

誰かが私に例えば0x00007fff90128650もっと...意味のあるものにし、それを(将来のクラッシュレポートで)関数の名前も表示させる方法を教えてもらえますか?

4

3 に答える 3

13

クラッシュログには多くの情報が含まれています。最初に、アドレス0にアクセスしようとしたためにクラッシュしましたが、カーネルは満足していません。

Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000

ほら、0x00アドレスから始まるセグメンテーションを取得するので、0/nilポインターに直接アクセスしているように見えます。このような

char* adress = 0;
printf("get %p", adress); // will output 0x0
printf("get %p", adress[0]); // will make a EXC_BAD_ACCESS

あなたは本当にこれに集中するべきです。

クラッシュスタックから、3つの興味深いことがあります。

6   com.apple.AppKit                0x00007fff9a7894a7 -[NSTableView textDidChange:] + 377
 5   com.apple.Foundation            0x00007fff8e5fe846 -[NSNotificationCenter postNotificationName:object:userInfo:] + 64
    0   libsystem_c.dylib               0x00007fff90128650 strlen + 16

[textDidChange]は、[textDidChange]が発生したときに通知を送信する方法で、クラッシュを引き起こした最後の呼び出しの1つです。そして、実際にクラッシュした最後の行:strlen + 16は、有効なポインターアドレスからcharの長さを取得できると考えるものがあるためですが、実際にはそうではありません。

私によると、通知に何を送信しているかを確認する必要があります。

_NSDoUserReplaceForCharRange
  _NSDoUserDeleteForCharRange

スタックのクラッシュを詳しく調べると、実際には、セルを作成したときに表示されているように見えます-urtableViewControllerへの挿入/削除。誰かが無効なデータをプッシュするか、編集セルを想定どおりに使用していないことを確認する必要があります。

履歴書は次のとおりです。1誰かがtableViewCellを編集しました。彼は挿入しないか、コードが本来あるべきものを挿入しません。2無効なデータを含む通知を送信しています。3 strlen(invalid_dataStructure)が起動されると、アプリがクラッシュします

ちなみに、実際にあなたのコードの実装を知らないので、私はただ「推測」しています。しかし、それがあなたのデバッグセッションのための多くの手がかりをあなたに与えることができることを願っています。

于 2012-10-14T11:51:38.867 に答える
0

通常、問題は「保持」プロパティが必要なことです。

デバッグモードでゾンビを有効にする必要があります。xCode 4で、[スキームの編集]->[診断]->[ゾンビオブジェクトを有効にする]をクリックします。

クラッシュ時にアクセスしようとした「削除された」オブジェクトがコンソールに表示されます。

これは役立つはずです。

次のようなものが表示されます。

2010-01-25 14:35:24.840 MyApplication[1393:20b] *** -[CFString retain]: message sent to deallocated instance 0x42a5060

「Malloclogging」を有効にして、クラッシュ後にデバッグコンソールで次のコマンドを入力することもできます。

shell malloc_history 1393 0x42a5060

そこにすべてのalloc/releaseスタックがあります。releaseコマンドとallocコマンドを見てください。

于 2012-10-14T03:57:00.447 に答える
0

グラフィックを多用するアプリケーション (pymol と coot) を開こうとすると、非常によく似たクラッシュ レポートが表示されました (以下を参照)。

Mac を外部モニターから切断すると、プログラムが再び機能することがわかりました。私はUSB-HDMI コネクタを使用していましたが、明らかにこれは悪い考えです。microUSB-HDMI コネクタを購入しましたが、これでうまくいくと思います。Mac Book 自体のモニター ディスプレイを使用するだけで、プログラムが実行されます。

Time Awake Since Boot: 19000 seconds
Time Since Wake:       110 seconds

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_ACCESS (SIGSEGV)
Exception Codes:       KERN_INVALID_ADDRESS at 0x0000000000000000

VM Regions Near 0:
--> 
    __TEXT                 0000000100000000-0000000100cff000 [ 13.0M] r-x/rwx SM=COW  /Applications/MacPyMOL.app/Contents/MacOS/MacPyMOL

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   com.apple.opengl                0x00007fff8333857c CGLDescribeRenderer + 79
1   com.schrodinger.macpymol        0x000000010083c5b4 CheckOpenGLCaps + 484
2   com.schrodinger.macpymol        0x000000010084cd8c -[PyMOLOpenGLView awakeFromNib] + 1420
3   com.apple.CoreFoundation        0x00007fff8a10785f -[NSSet makeObjectsPerformSelector:] + 223
4   com.apple.AppKit                0x00007fff88b935cd -[NSIBObjectData nibInstantiateWithOwner:options:topLevelObjects:] + 1216
5   com.apple.AppKit                0x00007fff886a3605 loadNib + 384
6   com.apple.AppKit                0x00007fff88c14749 +[NSBundle(NSNibLoading) _loadNibFile:nameTable:options:withZone:ownerBundle:] + 727
7   com.apple.AppKit                0x00007fff88c14ca8 +[NSBundle(NSNibLoadingInternal) _loadNibFile:externalNameTable:options:withZone:] + 150
8   com.apple.AppKit                0x00007fff886a2bc0 +[NSBundle(NSNibLoading) loadNibNamed:owner:] + 631
9   com.schrodinger.macpymol        0x000000010084d77b main + 1499
10  com.schrodinger.macpymol        0x0000000100007494 start + 52
于 2015-03-10T02:55:51.147 に答える