Dr.*_*eon 4 macos cocoa objective-c crash-reports
好的,所以我收到了我的一个应用程序的崩溃报告,但我发誓我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
Run Code Online (Sandbox Code Playgroud)
你知道可能出了什么问题吗?或者你能指出我正确的方向吗?
作为旁白 :
任何人都可以指导我如何使0x00007fff90128650更多......有意义并使它(在未来的某些崩溃报告中)也显示该功能的名称?
Mr *_*our 13
你的崩溃日志给你很多信息:首先你崩溃了,因为你试图访问地址0进入你的程序,内核不高兴.
Exception Type: EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x0000000000000000
Run Code Online (Sandbox Code Playgroud)
通过它开始到0x00地址的方式看,你得到一个分段,所以就像你直接访问0/nil指针一样.像这样
char* adress = 0;
printf("get %p", adress); // will output 0x0
printf("get %p", adress[0]); // will make a EXC_BAD_ACCESS
Run Code Online (Sandbox Code Playgroud)
你应该专注于此.
从崩溃堆栈中有三件有趣的事情:
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
Run Code Online (Sandbox Code Playgroud)
[textDidChange]是导致崩溃的最后一次调用,就像你在触发[textDidChange]时发送通知一样.实际发生崩溃的最后一行:strlen + 16是因为有些东西认为它可以从有效的指针地址获得一个字符长度而事实并非如此.
据我说,你应该检查你发送到你的通知中的内容.
_NSDoUserReplaceForCharRange
_NSDoUserDeleteForCharRange
Run Code Online (Sandbox Code Playgroud)
当你深入研究堆栈崩溃时,当你在你的tableViewController中进行单元格插入/删除时,它似乎就出现了.您应该检查某人是否有人推送无效数据,或者不按预期方式使用编辑单元格.
所以这是简历:1有人编辑tableViewCell,他没有插入或代码没有插入它应该是什么.2您发送的通知中包含无效数据.3当strlen(invalid_dataStructure)被触发时,它会使你的应用程序崩溃
顺便说一句,我只是"猜测",因为我实际上并不知道你的代码实现.但是我希望它可以为你的调试会话提供很多线索.
| 归档时间: |
|
| 查看次数: |
12003 次 |
| 最近记录: |