debug ios 输出日志_ios debug symbols查看错误日志 - CSDN
  • iOS日常Debug之Crash日志文件分析

    千次阅读 2017-07-08 23:27:26
    好久没写博客了,真的不是...还附带上了Crash日志文件。看了一眼Crash日志文件,彻底懵了! What?(此处略过一句脏话)一、查看Crash日志文件信息看到这种东西,我第一反应就是跑去看官方文档! Incident Identifier

    好久没写博客了,真的不是忙没有时间。就是懒!闲话少说,言归正传。事件起因,群里一个朋友说自己的app被拒了,苹果给的被拒原因是AppStore审核指南条例2.1,说是app存在崩溃。还附带上了Crash日志文件。看了一眼Crash日志文件,彻底懵了!


    What?(此处略过一句脏话)

    一、查看Crash日志文件信息

    看到这种东西,我第一反应就是跑去看官方文档

    • Incident Identifier:crash报告的唯一标识符。
    • CrashReporter Key:每台设备的匿名标识符。
    • Hardware Model:crash产生的设备类型
    • OS Version:设备操作系统版本
    • Exception Type:crash异常类型
    • Exception Codes:crash异常错误码
    • Exception Note:crash异常附加信息
    • Triggered by Thread:异常产生的线程。
    • Last Exception Backtrace:最后的异常回溯

    然并卵,有了这些信息还是看不懂啊!难道是打开方式不对?

    二、开始分析

    我们可以用Xcode自带的symbolicatecrash工具分析.crash文件

    1、找到Xcode自带的symbolicatecrash工具路径:

    /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash

    2、找到苹果公司反馈的crash日志文件(我这里只有一个链接,我直接把链接里面的crash日志内容保存成了一个.crash文件“XX.crash”)

    3、找到崩溃app对应的dSYM文件。(别人直接发了崩溃app的xcarchive文件给我,.dSYM文件就在xcarchive文件的dSYMs文件夹下的“XX.app.dSYM”)

    4、在终端执行以下命令:

    
    symbolicatecrash路径 XX.crash(苹果公司给的crash日志文件路径) XX.app.dSYM(崩溃app对应的dSYM文件路径) > 输出文件路径
    

    如果在执行命令的过程中会出现错误信息:“Error: “DEVELOPER_DIR” is not defined at /Applications/Xcode.app/Contents/SharedFrameworks/DVTFoundation.framework/Versions/A/Resources/symbolicatecrash line 69.”

    解决方案:

    在终端执行export DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer

    执行完成后,再执行第4步。

    第4步执行具体过程如下图所示:

    三、分析结果

    经过以上4步之后,我们可以在打开桌面上生成的crash文件(我的输出路径是”~/desktop/exam.crash”)。

    这样是不是思路就清晰了很多?接下来定位bug就看你的了!

    本文内容中部分参考网络资料,后续会不断更新完善。欢迎一起学习交流!

    四、参考文章地址:

    展开全文
  • 在.pch中写: ...#ifdef DEBUG // 调试阶段 #define CXSLog(...) NSLog(__VA_ARGS__) #else // 发布阶段 #defineCXSLog (...) #endif 转载于:https://www.cnblogs.com/changxs/p/3791597.html...
    在.pch中写:
    #ifdef DEBUG  // 调试阶段
    #define CXSLog(...) NSLog(__VA_ARGS__)
    #else // 发布阶段
    #define CXSLog
    (...)
    #endif

    转载于:https://www.cnblogs.com/changxs/p/3791597.html

    展开全文
  • OPTIMIZE :用于release和debug的判断,当选择了OPTIMIZE 时,可以让代码在release时执行,在debug时不执行。 示例如下:#ifndef __OPTIMIZE__ //这里是debug模式下 else //这里是release模式下 #endif

    OPTIMIZE :用于release和debug的判断,当选择了OPTIMIZE 时,可以让代码在release时执行,在debug时不执行。
    示例如下:

    #ifndef __OPTIMIZE__  
    
        //这里是debug模式下  
    
    else  
    
        //这里是release模式下  
    
    #endif
    展开全文
  • IOS屏蔽输出日志

    千次阅读 2014-03-18 13:43:59
    因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。 我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消...

    因为NSLog的输出还是比较消耗系统资源的,而且输出的数据也可能会暴露出App里的保密数据,所以发布正式版时需要把这些输出全部屏蔽掉。

    我们可以在发布版本前先把所有NSLog语句注释掉,等以后要调试时,再取消这些注释,这实在是一件无趣而耗时的事!还好,还有更优雅的解决方法,就是在项目的prefix.pch文件里加入下面一段代码,加入后,NSLog就只在Debug下有输出,Release下不输出了。


    如何实现:

    -Prefix.pch(pch全称是“precompiled header”,也就是预编译头文件,该文件里存放的工程中一些不常被修改的代码,比如常用的框架头文件,这样做的目的提高编译器编译速度。我们知道当我们修改一个工程中某个文件代码时候,编译器并不是重新编译所有所有文件,而是编译改动过文件的,假如pch中某个文件修改了,那么pch整个文件里包含的的其他文件也会重新编译一次,这样就会消耗大量时间,所以它里面添加的文件最好是是很少变动或不变动的头文件或者是预编译的代码片段;)文件中添加
    [plain] view plaincopy
    1. #ifdef DEBUG  
    2. #define NSLog(...) NSLog(__VA_ARGS__)  
    3. #define debugMethod() NSLog(@"%s", __func__)  
    4. #else  
    5. #define NSLog(...)  
    6. #define debugMethod()  
    7. #endif  

    上段代码的意思就是 用宏指令做一个判断,如果DEBUG为真,则编译#ifdef到#endif宏定义,否则编译器就不编译;



    这个DEBUG在哪设置呢,

    在 "Target > Build Settings > Preprocessor Macros > Debug" 里有一个"DEBUG=1"。

    设置为Debug模式下,Product-->Scheme-->EditScheme -->Run
    设置Build Configuration成Debug时,就可以打印nslog了。
    设置Release,发布app版本的时候就不会打印了,提高了性能
    展开全文
  • 为什么80%的码农都做不了架构师?>>> ...
  • 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统...
  • iOS打印Debug日志的方式

    千次阅读 2012-06-19 11:15:17
    简单介绍以下几个宏: 1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于,当可变参数的个数为0时,这里的##起到...
  • IOS 调试日志输出

    千次阅读 2014-08-01 14:47:16
    +(void)logMessageByUUID:(NSString *)UUID{    NSSetUncaughtExceptionHandler (&UncaughtExceptionHandler);  NSFileManager * filemangage =[NSFileManager defaultManager];... NSArray
  • 浅谈iOS日志收集系统

    万次阅读 2017-07-28 16:02:52
    在浅谈iOS日志收集系统中介绍了如何收集iOS崩溃日志与如何解析iOS崩溃日志,主要用到了两个工具: plcrashutil:将plcrash文件转换成苹果标准崩溃格式 symbolicatecrash:符号化崩溃信息 结合这两个工具写了一个脚本...
  • iOS日志记录

    2017-10-22 09:42:30
    iOS日志记录
  • IOS将异常输出日志

    千次阅读 2016-07-25 09:29:56
    对于那些做后端开发的工程师来说,看LOG...而且iOS的异常机制比较复杂,Objective-C的语言驾驭也需要一定的功力,做出来的应用有时候挺容易产生崩溃闪退。一遍一遍的用XCode取应用崩溃记录、解析符号,通常不胜其烦,有
  • ios开发中打印日志消息控制

    千次阅读 2014-10-18 16:47:13
    ios项目开发中,项目发布时需要去掉NSLog消息,不然会非常影响性能,但是去掉
  • iOS搭建Log日志系统

    千次阅读 2018-09-26 15:44:47
    CocoaLumberjack是适用于Mac和iOS的快速简单但功能强大且灵活的日志框架。 本文主要介绍基于CocoaLumberjack搭建iOS项目Log日志系统。 CocoaLumberjack开源地址 一、CocoaLumberjack架构 CocoaLumberjack架构 ...
  • iOS 自定义日志输出

    2019-01-03 16:58:57
    在做iOS开发过程中,我们经常需要输出日志来查看某些数据是否打印出来,或者查看查个类是否被调用了。 系统默认的是NSLog(@"xxxx %d",1) ,但如果该APP要发布到商店,就要把这些日志全部都注释掉,要不是...
  • 转载...其实不然,有些场景下我们还是需要实时查看App运行时的日志的,比如测试人员拿着测试机发现问题了过来找你,这时候要看运行时日志,又不能重新DEBUG安装版本,怎么...
  • iOS中格式化输出日志

    2019-06-16 04:18:01
    2019独角兽企业重金招聘Python工程师标准>>> ...
1 2 3 4 5 ... 20
收藏数 7,227
精华内容 2,890
关键字:

debug ios 输出日志