iOS根据Debug和Release状态的变化来屏蔽日志输出 精选 转载 iSanny 2013-04-24 13:30:28 博主文章分类:IOS开发(转载) 文章标签 iOS屏蔽日志输出 文章分类 iOS 移动开发 今天在这里分享一个很实用的小技巧。 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到NSLog调用,然后注释掉。 这样做在项目小的时候还比较有效,但随着项目规模的增长,就会变得越来越难控制。 下面就给大家介绍一个简单的方法,让我们在生成Release版本时不需要进行任何更改即可屏蔽所有的Log输出。(即提供C++中TRACE的功能,iOS目前居然没有提供,很是失望,估计后续应该会加上吧)1. 首先我们先要定义这样一段预处理命令,文件名随便起,例如 CLog.h#ifdef DEBUG #define CLog(format, ...) NSLog(format, ## __VA_ARGS__) #else #define CLog(format, ...) #endif 这里我们判断DEBUG这个宏是否定义(最好用_DEBUG宏,和C++中保持一致),如果有定义我们就将这个CLog宏替换成NSLog调用,而如果没有定义过DEBUG标志我们就直接跳过。这点应该不难理解。 2. 检查DEBUG标志是否正确定义,xcode一般会在debug运行配置项里面已经定义号了DEBUG标志,如果没定义我们就自己写上,以我的xcode4 为例,如下图: 找到PreProcessor Macros 这个属性,对于Debug配置我们给他写上DEBUG,而在Release配置中把它留空。 这样我们刚才那段预处理命令就可以根据这个标志来判断我们编译的时调试版本还是发布版本,从而控制NSLog的输出。 (因为xcode 4 会把debug/release 两个配置项同时对比展现出来,而3.x版本的只能分别设置, 如果你用的时xcode 3.x 开发工具, 那么就分别对Debug/Release 都检查一下)。3. 到了这里我们这个判断工作就都进行完了,不过这里还有一点比较麻烦,就是我们如果想实用CLog宏,就必须要导入 CLog.h 这个头文件。 不过xcode为我们提供了一种非常巧妙的解决办法。 我们自己看一下项目里的文件,是不是有一个叫做 xxx-prefix.pch 的文件,只要注意到pch这个扩展名就可以了。 这个文件是做什么用的呢? 下面是一个pch文件的样本:// // Prefix header for all source files // #import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iPhone SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #endif 这里引入了一些头文件, 其实是xcode 的一种预编译机制,我们在编译一个项目的时候,会有很多常用的源文件,并且这些代码文件几乎不被修改,所以xcode对这些文件只在早期进行一次编译,以便我们以后的多次构建过程中反复实用。 例如这里的UIKit和Foundation ,这样的机制可以加快我们每次构建项目的速度。 当然这里我们不必太深究它,知道它的作用后,我们就可以利用它来为我们的开发提供便利。 我们只需要将刚刚建立的CLog.h 也在这里面引入一下,这样我们项目中的所有文件就都能够访问到我们刚刚定义的CLog宏了。 下面是完成后的pch文件:#import <Availability.h> #ifndef __IPHONE_3_0 #warning "This project uses features only available in iPhone SDK 3.0 and later." #endif #ifdef __OBJC__ #import <UIKit/UIKit.h> #import <Foundation/Foundation.h> #import "CLog.h" #endif 这样,我们的CLog就完成了,现在可以在任何一个源文件中实用CLog宏来输出日志,预处理命令会自动判断当前的编译配置,如果是Debug,就会输出日志,反之则什么都不会输出。 赞 收藏 评论 分享 举报 上一篇:UITabBarController使用详解 下一篇:NSSCanner:scanUpToString和scanString的区别 提问和评论都可以,用心的回复会被更多人看到 评论 发布评论 全部评论 () 最热 最新 相关文章 为什么我的项目Debug运行没问题,编译成Release包就报错? 引言在Android开发中,debug包和release包的行为差异可能导致release包在运行时出现问题,而这些问题在debug包中不会出现。本文主要介绍debug包和release包的差异,导致此问题出现的可能原因及解决办法。一、Debug与Release编译的基本差异1. 编译配置· 优化级别:Release模式通常启用更高级别的编译优化,包括代码内联、循环展开、死代码移除等,以提高应 第三方库 代码混淆 API MariaDB 11.4 中的变化和改进 MariaDB 11.4 是最新的长期支持版本(LTS)。第一个可用版本是 11.4.2,于 2024 年 5 月 29 日发布,该分支将一直支持到 2029 年 5 月 29 日。上一个 LTS 分支是 10.11,它将支持到 2028 年 2 月 16 日。11.4 分支包括近期短期支持版本引入的增强功能:11.0、11.1、11.2、11.3,以及之前未发布的新增强功能。以下罗列出关键新特性 二进制日志 子查询 半连接 C++崩溃日志输出(Windows Qt) C++奔溃日志输出,包含行号文件堆栈等重要信息 异常处理程序 日志 hive 客户端屏蔽日志输出 # 客户端屏蔽Hive日志输出教程作为一名经验丰富的开发者,你需要教一位刚入行的小白如何实现“hive 客户端屏蔽日志输出”。以下是教程的详细步骤:## 教程步骤```mermaidjourney title 客户端屏蔽Hive日志输出教程 section 了解需求 开发者确认客户端屏蔽Hive日志输出需求 section 修改配置文件 Hive hive 日志输出 NSLog debug调试 release屏蔽 转自 http://www.cnblogs.com/likwo/archive/2011/12/02/2272637.html根据是Debug和Release显示不同的调试信息在Ios开发中是常见的我以前是这么做的 #ifdef DEBUG#define Dlog NSLog#else#define Dlog //NSLog#endif但是在Xcode4.2 里当设置为release版本的时候,会 NSlog debug python 屏蔽debug日志 # Python屏蔽Debug日志在开发中,我们经常会使用日志来记录程序的运行状态和调试信息。而在调试阶段,我们通常会输出更多的日志信息以便于定位和解决问题。然而,当我们将程序部署到生产环境中时,我们可能希望屏蔽掉一些冗长的Debug日志,以减少日志文件大小和提高性能。本文将介绍如何在Python中屏蔽Debug日志的方法。## 使用logging模块记录日志在Python中,我们通常 日志记录 配置文件 python Release和debug 主要是针对其面向的目标不同的而进行区分的:Debug通常称为调试版本,通过一系列编译选项的配合,编译的结果通常包含调试信息,而且不做任何优化,以为开发人员提供强大的应用程序调试能力;而Release通常称为发布版本,是为用户使用的,一般客户不允许在发布版本上进行调试。所以不保存调试信息,同时,它往往进行了各种优化,以期达到代码最小和速度最优。为用户的使用提供便利。Debug 和 Release 编程环境 优化 编译器 library mfc [iOS开发系列]根据Debug和Release状态的变化来屏蔽日志输出 今天在这里分享一个很实用的小技巧。 我们平时在开发应用的时候,经常会用到NSLog来调试我们的程序,而随着项目越来越大,这些用于调试的日志输出就会变得很难管理。 我们在发布正式版的时候一定要屏蔽掉所有后台输出,因为这些输出还是比较消耗系统资源的。 往往到了这个时候,我们不得不去一行一行的找到NSL... #import xcode #endif iphone 预处理命令 Android 屏蔽日志 aop实现日志拦截 AOP基本认识SpringBoot AOP 实现埋点日志记录 AOP 的常用术语AOP 有一堆术语,主要包括以下: 通知(Advice) 需要完成的工作叫做通知,就是你写的业务逻辑中需要比如事务、日志等先定义好,然后需要的地方再去用。连接点(Join point) spring 中允许使用通知的地方,基本上每个方法前后抛异常时都可以是连接点。切点(Poincut) 筛选出的连接点,一个类中的所有方 Android 屏蔽日志 spring java 后端 AOP Java kafka 屏蔽日志 kafka gc日志 kafka日志清除策略kafka log的清理策略有两种:delete,compact,默认是delete 这个对应了kafka中每个topic对于record的管理模式delete:一般是使用按照时间保留的策略,当不活跃的segment的时间戳是大于设置的时间的时候,当前segment就会被删除 compact: 日志不会被删除,会被去重清理,这种模式要求每个record都必须有key,然后ka Java kafka 屏蔽日志 kafka 日志删除 配置 默认值 debug和release版 ios debug包和release包 Debug版本包括调试信息,所以要比Release版本大很多(可能大数百K至数M)。至于是否需要DLL支持,主要看你采用的编译选项。如果是基于ATL的,则Debug和Release版本对DLL的要求差不多。如果采用的编译选项为使用MFC动态库,则需要MFC42D.DLL等库支持,而Release版本需要MFC42.DLL支持。Release Build不对源代码进行调试, debug和release版 ios 初始化 编译选项 Express android Log屏蔽日志 aop实现日志拦截 AOPAspect Oriented Programming的缩写 面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。(说的更直白一点:能够让我们在不影响原有功能的前提下,为软件横向扩展 功能 。)这时会有人问了,什么是横行扩展呢??? 答:软件开发可分为"持久层" ,“业务层”, 控制器层";所谓的"横向"就是指上面说到的三个层里的任意一层!使用AOP技术后,用一个方 android Log屏蔽日志 aop spring 日志 线上问题排查 转 iOS开发debug跟release版本log屏蔽方法 简单介绍以下几个宏:1) __VA_ARGS__ 是一个可变参数的宏,这个可变参数的宏是新的C99规范中新增的,目前似乎只有gcc支持(VC6.0的编译器不支持)。宏前面加上##的作用在于, #define 可变参数 #endif 预编译 ios 【转】 iOS开发:Debug与Release版本NSLog屏蔽方法 发布IosAPP时去除NSLog打印第一步:在****-Prefix.pch文件中添加如下代码 #ifde javascript ios #ifdef pch文件 选项卡 Android release和debug android release和debug的区别 一、Debug 和 Release 的区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。 Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正区别,在于一组编译 #define 初始化 自定义消息 Android release和debug版本 android release和debug的区别 -------------------------------------- 本文主要包含如下内容: 1. Debug 和 Release 编译方式的本质区别 2. 哪些情况下 Release 版会出错 3. 怎样“调试” Release 版的程序 -------------------------------------- 关于Debug和R 优化 编译器 library vc++ mfc Android release包和debug android release和debug的区别 一、Debug 和 Release 编译方式的本质区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正秘密,在于一组编译选项。下面 初始化 编译选项 Express Android 的debug和release包区别 debug跟release Debug和Release区别 Debug和Release区别 2011年10月17日 Debug和Release区别VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位 软件开发 调试 初始化 #define 自定义消息 Android debug release的区别 和 apk debug release 区别 关于Debug和Release之本质区别的讨论本文主要包含如下内容:1. Debug 和 Release 编译方式的本质区别2. 哪些情况下 Release 版会出错2. 怎样“调试” Release 版的程序一、Debug 和 Release 编译方式的本质区别Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行 初始化 #define 编译选项 android release debug 判断 android debug和release的区别 说到这个问题,先得说说VC对Debug和Release的定义。实际上,Debug和Release只是VC对编译选项的预定义而已,如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然,我们也可以自己定义一组编译选项,然后命名为ABC,DEF等。当然,在习惯上,我们仍然更愿意使用VC已经定义好的名称。既然Debug和Release仅仅是编译选项的不同,那么为什么要区分Debu 编译器 library 优化 delete file