Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/39.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在为调试iphoneos构建时调试断言_Ios_Iphone_Swift_Debugging_Assert - Fatal编程技术网

Ios 如何在为调试iphoneos构建时调试断言

Ios 如何在为调试iphoneos构建时调试断言,ios,iphone,swift,debugging,assert,Ios,Iphone,Swift,Debugging,Assert,我正在为iOS开发一个SDK,并在代码中添加了一些assert(),以帮助我捕获bug。当使用模拟器时,它工作得很好,但是如果我在设备上构建我的应用程序(调试iphoneos),将其从mac上拔下,让它进行测试,我从断言失败中获得的崩溃日志是不可能理解的。 来自基本nil断言失败的真实示例: Exception Type: EXC_BREAKPOINT (SIGTRAP) Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe Trigg

我正在为iOS开发一个SDK,并在代码中添加了一些assert(),以帮助我捕获bug。当使用模拟器时,它工作得很好,但是如果我在设备上构建我的应用程序(调试iphoneos),将其从mac上拔下,让它进行测试,我从断言失败中获得的崩溃日志是不可能理解的。 来自基本nil断言失败的真实示例:

Exception Type:  EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x00000000e7ffdefe
Triggered by Thread:  0

Filtered syslog:
None found

Global Trace Buffer (reverse chronological seconds):
10.153264    CFNetwork                  0x0000000021bb897d TCP Conn 0x14dbd8c0 complete. fd: 9, err: 0
10.154690    CFNetwork                  0x0000000021bb9a7f TCP Conn 0x14dbd8c0 event 1. err: 0
10.288093    CFNetwork                  0x0000000021bb9afd TCP Conn 0x14dbd8c0 started
10.293561    CFNetwork                  0x0000000021bff26f Creating default cookie storage with default identifier
10.293562    CFNetwork                  0x0000000021bff24b Faulting in CFHTTPCookieStorage singleton
10.293562    CFNetwork                  0x0000000021c418f7 Faulting in NSHTTPCookieStorage singleton
10.514965    CFNetwork                  0x0000000021bb897d TCP Conn 0x14d88140 complete. fd: 4, err: 0
10.514965    CFNetwork                  0x0000000021bb9a7f TCP Conn 0x14d88140 event 1. err: 0
10.789507    CFNetwork                  0x0000000021bb9afd TCP Conn 0x14d88140 started



Thread 0 name:  Dispatch queue: com.apple.main-thread
Thread 0 Crashed:
0   libswiftCore.dylib              0x00509e10 0x3af000 + 1420816
1   MyFramework                     0x002ddfec 0x24f000 + 585708
有没有可能从事故日志中得到更多信息?我尝试了
atos-arch-armv7-o MyApp.app/MyApp 0x24f000
,但没有任何成功(返回0x24f000)

这篇文章解决了这个问题

在这里,我必须从.app中提取我的框架并执行以下操作

xcrun atos -arch armv7 -o  MyFramework.framework/MyFramework -l 0x24f000 0x002ddfec

(注意记忆地址的相反顺序)

。。。为什么不让你的设备插上电源,并在断言处设置一个断点呢?我并不是唯一一个参与这个项目的人,还有3个活动的测试人员。我建议你做几件事。。。断言应该用于你认为永远不会为真的东西,所以我先分析一下你的假设是如何错误的。接下来,添加一些日志记录(一个合适的日志记录库,比如CocoaLumberjack,会很有帮助)。接下来,添加一些适当的崩溃跟踪工具,如Crashlytics。最后,更糟糕的情况是,出于调试目的,将断言更改为fatalErrors,这对于在崩溃日志中放置堆栈跟踪来说应该更好。