`
synchronized_lala
  • 浏览: 40588 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

iOS/调试器和程序崩溃时的一些处理方法

阅读更多

假如你准备在模拟器里面运行这个,你可以在“(lldb)”提示的后面输入下面的:

(lldb) po $eax

LLDB在xcode4.3或者之后的版本里面是默认的调试器。假如你正在使用老一点版本的xcode的话,你又GDB调试器。他们有一些基本的相同的命令,因此假如你的xcode使用的是“(gdb)”提示,而不是“(lldb)”提示的话,你也能够更随一起做,而没有问题。

“po”命令是“print object”(打印对象)的简写。“$eax”是cup的一个寄存器。在一个异常的情况下,这个寄存器将会包含一个异常对象的指针。注意:$eax只会在模拟器里面工作,假如你在设备上调试,你将需要使用”$r0″寄存器。

例如,假如你输入:

(lldb) po [$eax class]

你将会看像这样的东西:

(id) $2 = 0x01446e84 NSException

这些数字不重要,但是很明显的是你正在处理的NSException对象在这里。

你可以对这个对象调用任何方法。例如:

(lldb) po [$eax name]

这个将会输出这个异常的名字,在这里是NSInvalidArgumentException,并且:

(lldb) po [$eax reason]

这个将会输出错误消息:

(unsigned int) $4 = 114784400 Receiver () has no
segue with identifier 'ModalSegue'

 

注意:当你仅仅使用了“po $eax”,这个命令将会对这个对象调用“description”方法和打印出来,在这个情况下,你也会得到错误的消息。

 

 

 

实用LLDB命令

命令名 用法 说明
expr expr 表达式 可以在调试时动态执行指定表达式,并将结果打印出来,很有用的命令。
po po 表达式 与expr类似,打印对象,会调用对象description方法。是print-object的简写
print print (type) 表达式 也是打印命令,需要指定类型。
bt bt [all] 打印调用堆栈,是thread backtrace的简写,加all可打印所有thread的堆栈。
br l br l breakpoint list的简写
process continue l process continue 简写:c
thread step-in l thread step-in l 简写:s
thread step-inst l thread step-inst l 简写:si
thread step-over l thread step-over l 简写:n
thread step-over-inst l thread step-over-inst l 简写:ni
thread step-out l thread step-out l 简写:f
thread list thread list 简写:th l

内存泄漏隐患提示
Potential Leak of an object allocated on line ……
数据赋值隐患提示
The left operand of …… is a garbage value;
对象引用隐患提示
Reference-Counted object is used after it is released;

对retain、copy、init、release、autorelease等在计数时的使用情况的详细讲解,推荐一下:

http://www.cnblogs.com/andyque/archive/2011/08/08/2131236.html

调用autorelease这意味着,你可以在这个函数里面使用vari,但是,一旦下一次run loop被调用的时候,它就会被发送release对象。然后引用计数改为0,那么内存也就被释放掉了。(关于autorelease到底是怎么工作的,我的理解是:每一个线程都有一个autoreleasePool的栈,里面放了很多autoreleasePool对象。当你向一个对象发送autorelease消息之后,就会把该对象加到当前栈顶的autoreleasePool中去。当当前runLoop结束的时候,就会把这个pool销毁,同时对它里面的所有的autorelease对象发送release消息。而autoreleasePool是在当前runLoop开始的时候创建的,并压入栈顶。那么什么是一个runLoop呢?一个UI事件,Timer call, delegate call, 都会是一个新的Runloop。)

 

 

 

 

当程序崩溃的时候怎么办,有如下两部分(英文版的):

http://www.raywenderlich.com/10209/my-app-crashed-now-what-part-1

(中文的part-1)http://article.ityran.com/archives/1006

http://www.raywenderlich.com/10505/my-app-crashed-now-what-part-2

(中文的part-2)http://article.ityran.com/archives/1143

 

 

内存使用详细介绍:

http://www.cocoachina.com/bbs/simple/?t94017.html

分享到:
评论

相关推荐

    ios真机调试步骤

    1. Debugger:Xcode内置的LLDB调试器可以帮助你逐步执行代码,查看变量状态,以及进行条件断点等高级调试操作。 2. Profiler:Xcode的Profiler工具提供了CPU、内存、能源效率等多种分析,帮助你找到性能问题的根源。...

    iOS 15.5开发者调试包

    它包括了编译器、调试器、模拟器等工具。为了调试iOS 15.5的应用,你需要确保Xcode版本支持该iOS版本。 2. **配置开发者账号**:在进行iOS应用开发时,需要加入Apple Developer Program,这将允许你在真实设备上...

    iOS13.2真机调试

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和操作系统版本上的表现。这里我们主要讨论的是如何在iOS 13.2环境下进行真机调试,这通常涉及到...

    iOS16.1 ,iOS16.2 - 真机调试

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和系统版本上的表现。这里我们主要关注的是iOS 16.1和iOS 16.2两个版本的真机调试。 iOS 16.1是...

    ios 真机调试包_14.6

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保其在各种硬件配置和系统版本上的表现。本文将深入探讨“ios 真机调试包_14.6”相关的知识,包括iOS 14.6系统的特性、...

    iOS11.1 真机调试包工具

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,确保软件在不同硬件和系统版本上的表现。本资源“iOS11.1 真机调试包工具”专为iOS11.1系统提供,帮助开发者在Xcode 8.x...

    ios14.5真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保其在各种硬件配置和系统版本上的表现。这里提到的"ios14.5真机调试包"是一个专为iOS 14.5版本设计的调试工具,帮助...

    iOS真机调试包13.2

    它允许开发者在真实的iOS设备上运行、测试和调试应用程序,以确保软件在各种设备和系统版本上的兼容性和性能表现。"iOS真机调试包13.2"就是这样一个专门用于在装有iOS 13.2系统的iPhone或iPad上进行真机调试的工具。...

    Ios 15.3 真机调试适配包

    Xcode包含了代码编辑器、界面构建器、调试器以及版本控制系统等一系列功能,使得开发者能够便捷地编写、编译和调试应用。为了适配iOS 15.3,你需要确保你的Xcode版本是最新的,因为旧版本可能不支持新系统的特性或...

    iOS真机调试包11.2.zip

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和系统版本上的表现。标题"iOS真机调试包11.2.zip"所指的是一个专门为iOS 11.2版本准备的真机调试...

    iOS13.6-真机调试

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保其在各种硬件配置和系统版本上的表现。本文将深入探讨在iOS 13.6版本下进行真机调试的关键知识点,以及如何有效地...

    IOS高级调试技术

    - **LLDB的使用**:LLDB是苹果公司为Mac OS X和iOS提供的下一代调试器,它提供了丰富的命令行接口和API,可以实现对程序的深度分析。本书将详细介绍如何利用LLDB进行高级调试。 - **断点设置**:合理设置断点是调试...

    iOS 11.0 真机调试包

    对于iOS 11.0的真机调试,Xcode会提供必要的工具链,如编译器、调试器和性能分析工具。 5. **断点与调试工具**:在Xcode中,可以设置断点来暂停代码执行,以便检查变量状态、调用堆栈和内存使用情况。LLDB是Xcode...

    IOS12.3真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际的iOS设备上运行、测试和调试应用程序,确保代码在各种硬件和系统版本上都能正常工作。本压缩包"IOS12.3真机调试包"是专门针对iOS 12.3版本的...

    ios真机调试包13.3.zip

    6. **实时查看器(Live View)**:在真机调试时,Xcode的Interface Builder提供实时查看器功能,可以在设备上实时预览UI设计,方便调整布局和交互。 7. **性能监控**:Xcode的Instruments工具可以监测CPU使用率、...

    IOS内存管理与软件调试

    Xcode提供了强大的调试工具,如LLDB调试器,它允许开发者在运行时检查代码状态,设置断点,查看内存分配,以及分析变量值。学会使用这些工具能帮助开发者快速定位并修复错误。当遇到应用崩溃(Crash)时,首先要查看...

    iOS 13.6(17g80)真机调试包

    Xcode是苹果官方的集成开发环境(IDE),它集成了代码编辑器、编译器、调试器以及许多其他工具,方便开发者构建、测试和发布iOS应用。在Xcode中,真机调试允许开发者在真实设备上查看应用的行为,与模拟器相比,真机...

    iOS10.2真机调试包

    在iOS开发过程中,真机调试是一项至关重要的环节,它允许开发者在实际设备上测试应用程序,以确保软件在各种硬件配置和系统版本上运行无误。本压缩包“iOS10.2真机调试包”正是为了这个目的而提供的,特别针对iOS ...

    iOS 11.1 真机调试镜像

    在调试时,确保你的Xcode版本与目标设备的iOS版本相匹配是非常重要的,这样才能充分利用调试工具,如断点、变量查看器和控制台输出等。 在进行真机调试时,开发者需要注意以下几点: 1. **证书与配置文件**:为在...

Global site tag (gtag.js) - Google Analytics