博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Terminating app due to uncaught exception 'NSGenericException' 类崩溃文章收集
阅读量:5345 次
发布时间:2019-06-15

本文共 4896 字,大约阅读时间需要 16 分钟。

 

 

 good

1.选中Xcode先把程序(command + R)运行起来

2.再选中Xcode,按快捷键(command + control + i   菜单在Product->Profile)运行起来,此时Leaks已经跑起来了  

3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测

4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree

5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries

6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处

7.找到了内存泄露的地方,那么我们就可以修改即可

 

 

   在警告中找到错误,然后升级设置

一、file was built for archive which is not the architecture being linked (armv7s)

项目是基于cocos2d-x绑定lua进行开发的,需要引用liblua.a静态库,编译的时候报上面的错。需要将liblua项目中的build Settings配置项中的“Build Active Architecture Only”改为YES  (是否只编译当前适用的指令集)

 

【3.异常断点】

断点的功能不限于上面所述。开发iOS知道,如果我们因为异常然后程序crash了,代码就直接跑到main.m的main函数中去了。为什么就不能跑到出现异常的代码中呢???异常断点就为我们解决该问题,程序就会在异常出现的那行代码终止。

【4.符号断点Symbolic Breakpoint】

符号断点的创建也同异常断点。一般符号断点可以在你指定的[类名 方法名]时中断执行。

5.Analyze分析器】

Analyze分析器是一种静态的工具,可以对我们的程序进行分析,找出我们未使用的变量,或一些死存储。执行Analyze如下:Product-->Analyze. 如下蓝色的标记就是静态分析的结果。

【7.僵尸对象】

iOS中把那些已经release但还没完全消失的对象叫做僵尸对象,对已经 release的对象再次释放,就会发生异常。虽然自从使用ARC后,由于对象释放产生的异常已经大大变少,但偶尔还会出现。开启僵尸对象模式后,就能快 速定位到异常位置。开启方式如下:Product-->Scheme-->Edit Scheme. 勾选Enable Zombie Objects即可。

11.查看代码运行时间】

有时候我们想要准确的知道某段代码、某个循环执行的时间,然后分析效率等问题,这个时候就需要执行时间是多少。正好看到网上已经有人做了这个工作,我就直接摘下来了。正好也用了宏的方式计算时间,我们只要在需要计算时间的代码块前后写上TICK,TOCK宏即可。

【14.视图调试】

如今iOS开发的UI设计有很多种方式,比如storyboard,xib, 代码实现。对于stoayboard,xib可视化实现是比较简单的,但是对于一些“iOS老程序员”而言,都喜欢使用代码实现UI,并且可能UI层次还 比较复杂。这样就给我们新接手项目的开发者带来很多困扰。如何快速查看一个复杂UI的界面层次和布局,最快的方法就是用到视图调试。

当项目运行到某一个界面(可以是模拟器或真机)时,开启视图调试

 

 

  红警

摘录:

iOS中运行App过程中如果发生程序崩溃,会生成一个崩溃日志文件。这个文件会保存的特定系统目录下,扩展名是crash。当手机连接到iTunes时,会将该文件同步到电脑上。

在Mac系统中这些文件会同步到“~/Library/Logs/CrashReporter/MobileDevice”下。

而在Windows系统中会同步到“C:\Users\\AppData\Roaming\Apple computer\Logs\CrashReporter/MobileDevice”(Vista或以上)或“C:\Documents and Settings\\Application Data\Apple computer\Logs\CrashReporter”(XP)。

一般崩溃日志头部有如下字段


Exception Type:  EXC_BAD_ACCESS (SIGSEGV)
Exception Codes: KERN_INVALID_ADDRESS at 0x20000008
Crashed Thread:  0

其中Exception Type是异常类型,Exception Codes是异常代码。Crashed Thread指示异常的线程编号。上面表示Crash的线程编号是0(主线程的线程编号是0)。

崩溃分为:

一般内存等系统异常Crash线程信息

程序抛出的异常的日志。 看 Last Exception Backtrace 部分

摘录:

什么情况下会产生崩溃日志?
两种主要情况会产生崩溃日志:
1.应用违反操作系统规则。
2.应用中有Bug。
 
违反iOS规则包括在启动、恢复、挂起、退出时watchdog超时、用户强制退出和低内存终止。让我们详细了解一下吧。
通常,用户点击Home按钮时,应用将在后台保留约10分钟,然后操作系统自动将其终止。
另外,值得一提的是在极短时间内分配一大块内存将给系统内存带来巨大负担。这样,也会产生内存警告的通知。
 
 从Xcode的Organizer窗口获取崩溃日志后过几秒钟,崩溃日志将被自动符号化。
 
注意: 你必需同时保留应用二进制文件和.dSYM文件才能将崩溃日志完整符号化。每次提交到iTunes Connect的构建都必需归档。
 
 
下面是一些常见的异常编码:
 Exception Codes  异常编码
0x8badf00d: 读做 “ate bad food”! (把数字换成字母,是不是很像 :p)该编码表示应用是因为发生watchdog超时而被iOS终止的。  通常是应用花费太多时间而无法启动、终止或响应用系统事件。
0xbad22222: 该编码表示 VoIP 应用因为过于频繁重启而被终止。
0xdead10cc: 读做 “dead lock”!该代码表明应用因为在后台运行时占用系统资源,如通讯录数据库不释放而被终止 。
0xdeadfa11: 读做 “dead fall”! 该代码表示应用是被用户强制退出的。根据苹果文档, 强制退出发生在用户长按开关按钮直到出现 “滑动来关机”, 然后长按 Home按钮。强制退出将产生 包含0xdeadfa11 异常编码的崩溃日志, 因为大多数是强制退出是因为应用阻塞了界面。
 

崩溃日志位置

1. 找到Symbolicatecrash文件   -- 符号化( symbolication)

Xcode 4.3的之后

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/

Xcode 4.3之前

/Developer/Platforms/iPhoneOS.platform/Developer/Library/PrivateFrameworks/DTDeviceKit.framework/Versions/A/Resources/symbolicatecrash

 

终端中输入以下命令

显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true

隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false

 

Xcode抛出异常的疑难杂症 新手求解    http://www.cocoachina.com/bbs/read.php?tid=72698

 

http://blog.csdn.net/xinruiios/article/details/8685512

 

Implicit declaration of function 'inet_aton' is invalid in C99

 

            解决办法:-std=gnu99的编译选项,#import <arpa/inet.h>。

lldb命令  bt  打印调用堆栈,是thread backtrace的简写

po [$eax name]  po [$eax reason]

 

  im loo -a 0x12f54 (最小的地址)

 

(lldb) im loo -a 0x3e294

      Address: BaiduMobStatSample[0x0003e294] (BaiduMobStatSample.__DATA.__cfstring + 768)
      Summary: @""

 

im loo -a 0x00007aba

      Address: BaiduMobStatSample[0x00007aba] (BaiduMobStatSample.__TEXT.__text + 19994)
      Summary: BaiduMobStatSample`main + 170 at main.m:17

 

  http://www.2cto.com/kf/201306/218567.html 打开断点导航面板,设置一个异常断点。打开断点导航面板,点击左下角的“+”按钮,选择Add Exception Breakpoint,接受默认设置

 

http://blog.sina.com.cn/s/blog_8d1bc23f0102uz9d.html

其中的一段:

1.假如崩溃在main.m里面,就可以设置全局异常断点(Exception Breakpoint)。

2.在异常断点开启的状态下,你也没有得到得到有用的信息。在这种情况下,多继续几次运行这个app,或者在调试提示后面输入“po $eax”命令。

3.大多数崩溃的一般原因和一些bug都是在你的xib中或者storyboard中的连接丢失了或者是错误的连接。这些情况不会在编译错误里面显示,因此你一般不知道。

4.不要忽略编译警告。假如你有编译警告,就说明你有些东西可能会出错。假如你不知道为什么你会到一个编译警告,最好去搞明白它. 这些都是安全的做法!

5.在设备上调试可能会和在模拟器上面有些微的不同。这两个环境不是完全一样,你将会得到不同的结果。

 

 

Adding an Exception Breakpoint

 

 

 

人有八个重要的 :
一、情感的安全感:
(1)和所爱的人在一起。父母离婚或恋人分手都会消减情感的安全感。
(2)和所爱的人彼此深爱。丈夫出轨或妻子出轨都会消减情感的安全感。
二、身体的安全感:
(1)不要得病。
(2)不要伤残。
三、社会关系的安全感:
(1)不得罪人。
(2)不被人伤害。
四、法律的安全感:
(1)不犯法。
(2)懂得用法律保护自己。
五、收入的安全感:
(1)收入满足普通生活。
(2)收入稳定。
六、福利的安全感:
养老保险、医疗保险、失业保险、工伤保险等。
七、房子的安全感:
在工作的城市,拥有自己的房子,心中才有归宿感。
八、生活环境的安全感:
(1)生活环境里,有超市、市场、商店、医院、公安局、公交车站等生活的配套机构。
(2)生活环境干净整洁、空气质量好。
有了这八个安全感,才能安心、踏实的生活。
 

转载于:https://www.cnblogs.com/dqxu/p/3567624.html

你可能感兴趣的文章
实验吧之这就是一个坑
查看>>
Linux常用命令(十二)
查看>>
Linux常用命令(十三)
查看>>
Linux常用命令(十五)
查看>>
Linux常用命令(十四)
查看>>
Linux常用命令(十七)
查看>>
Linux常用命令(十六)
查看>>
Linux常用命令(二十四)
查看>>
14、第七 - 网络编程基础 - 队列queue和生产者消费者模型
查看>>
4种java定时器
查看>>
Vue.js 教程
查看>>
【php中的curl】php中curl的详细解说
查看>>
自习(二)
查看>>
uva 10375 Choose and divide
查看>>
深刻理解:C#中的委托、事件
查看>>
linux 设置网卡
查看>>
C#中datatable导出excel(三种方法)
查看>>
面向接口编程
查看>>
hive 语法 case when 语法
查看>>
归并排序
查看>>