cocos2dx 3.9.1 mac模拟器log输出bug修正

今天发现某些情况下mac模拟器会出现不输出log的情况, 跟踪了一下发现问题出现在mac/SimulatorApp.mm文件的handleNotification方法。

NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];

  

这句代码在某些情况下str会为nil值导致模拟器不会输出任何log,  原因可能是data的编码中存在个别字符乱码导致整体不输出的情况。

修改后的代码如下

- (void)handleNotification:(NSNotification *)note
{
    //NSLog(@"Received notification: %@", note);
    [_pipeReadHandle readInBackgroundAndNotify] ;
    NSData *data = [[note userInfo] objectForKey:NSFileHandleNotificationDataItem];
    NSString *str = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
    if (!str)
    {
        str =[[[NSString alloc]initWithData:data encoding:NSASCIIStringEncoding] autorelease];
    }
    if (!str)
    {
        str = @"encoding NSData to NSString error";
    }
    //show log to console
    [_consoleController trace:str];
    if(_fileHandle!=nil)
    {
        [_fileHandle writeData:[str dataUsingEncoding:NSUTF8StringEncoding]];
    }
}

  当用utf8无法正常解码改用asc解码输出,这样就能看见输出了

  

时间: 2024-12-17 10:32:52

cocos2dx 3.9.1 mac模拟器log输出bug修正的相关文章

写自己的游戏 - 用颜色来区分不同的log输出(cocos2d-x) 同样适用于其他游戏引擎

游戏脚本化开发已经成为一种主流的趋势,伴随着产生大量的人才需求.近两年,各个游戏公司对于lua程序员的需求明显是增长额有点过分了,真的是太不正常了.抛开市场化需求的东西不谈,我们谈一些技术,一些琐碎的,可有可无,非重点的技术.近几天我都在写客户端的开发框架,目的就是让LUA程序员可以使用一款自己喜欢的编辑器,版本控制工具以及部分内部工具就可以随心所欲的开发逻辑模块,这对我来说也算是满有挑战性的,不过我喜欢,反正我都是写给自己玩,又不用别人去要求什么,所以随心所欲吧,尽量做到最好. 对于cocos

cocos2d-x 3.0在mac下的基本配置

随着3.0正式版的发布,有必要开始对其进行一番研究.首先就从环境搭建以及基本的配置开始. 其实在cocos2d-x的官方wiki中已经有了比较详细的介绍,只不过是英文的,这里针对实际操作给大家简单翻译说明一下. 创建一个cocos2d-x项目 1.1 环境需要 Android 2.3 或更新版本 ios 5.0 或更新版本 OS X 10.7 或更新版本 Xcode 4.6 以上版本 gcc 4.7 和Android ndk-r9以上版本 Python 2.7.5 1.2 创建一个新的项目 首先

对于Android系统Log输出日志的封装LogUtils

MainActivity如下: package cc.cn.logutil; import android.os.Bundle; import android.app.Activity; /** * Demo描述: * 对于Android系统Log输出日志的封装LogUtils * 1 可修改LogUtils中的LEVEL值觉得哪些级别的日志可以输出. * 所以方便选择性输出日志或者屏蔽日志输出 * 2 输出的日志除了本想输出的信息外还包含了该日志输出时所属 * 的线程,类,方法名,已经在该方法

【Unity游戏开发之二】定制Debug.log输出

环境:Unity开发时会有很多的Debug.log输出测试 问题:最后游戏发布的时候,不希望在Produce发布环境也输出大量的日志,官方目前也没有正统的做法. 解决方法1: 重新封装 将Debug.log重新封装,自己添加开关. using UnityEngine; using System.Collections; public class Debuger { static public bool EnableLog = false; static public void Log(objec

【记录】尝试用android-logging-log4j去实现log输出内容到sd卡中的文件的功能

[背景] 折腾: [记录]给Android中添加log日志输出到文件 期间,已经试了: [记录]尝试用android中microlog4android实现log输出到文件的功能 但是不好用. 然后就是参考: http://stackoverflow.com/questions/2116260/logging-to-a-file-on-android 去看看: http://code.google.com/p/android-logging-log4j/ [[折腾过程] 1.去: https://

一个小巧的C++Log输出到文件类 (转)

http://blog.csdn.net/dpsying/article/details/17122739 有时候需要输出一些程序运行的信息,供我们不需要调试就可以直接查看程序运行状态.所以我们需要在程序中加入一些LOG输出. 适合涉及到虚拟机调试一些关于驱动等的程序时,或进行远程调试时. 搜了些log工具,不够轻……还是简单实现下吧 贴上来,可能有用的上: Log.h [cpp] view plaincopy /** * 用于输出log文件的类. */ #ifndef LOG_H #defin

隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat

此处是转载的  是给自己做的备注 问题:隔一段时间应用就会挂掉(进程在,但停止响应,也无log输出),必须重启tomcat 原因查找:由于tomcat自身log中并无错误产生,磁盘空间足够,读写也正常,排除其他原因后怀疑是jvm崩溃导致,于是查gc日志:从上图可以看出每次full GC是老年代内存占用量相当小,远没有达到它的最大值,持久代也一样,而且每次GC过后,占用量基本没有变化,也就是说,每一次full GC都是在做无用功,白白浪费掉了一大批性能.从内存占用率方面看不是内存分配不够,应该是程

Cocos2d-x之Log输出机制

|   版权声明:本文为博主原创文章,未经博主允许不得转载. 在cocos2d-x中,我们使用log这个函数进行输出,log可以输出很多参数,它的使用方式就和使用c语言中的printf的使用方式差不多.log其实是一个跨平台的日志输出的API,它在visual stdio中,就包含visual stdio的输出API,在苹果平台使用的是NSlog,在Andriod平台使用的是Andriod平台的日志输出工具,因为在苹果和windows,phone等平台的底层所包装的输出机制是不一样的,但是因为c

[Android Pro] Android studio jni中调用Log输出调试信息

reference to : http://www.linuxidc.com/Linux/2014-02/96341.htm Android 开发中,java 可以方便的使用调试信息Log.i, Log.d ...,Jni层可否使用呢?答案是肯定的. 1 为方便使用,先进行宏定义: eben_hpc_log.h内容如下: #ifndef _Included_hpc_Log#define _Included_hpc_Log#ifdef __cplusplusextern "C" {#en