let str = '\x00\x01\x03';
console.log('字符串是', str);
console.log('字符串是' + str);
- 发布:2024-04-23 17:23
- 更新:2024-04-23 17:29
- 阅读:103
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 14.2.1 (23C71)
HBuilderX类型: 正式
HBuilderX版本号: 3.96
手机系统: iOS
手机系统版本号: iOS 14
手机厂商: 苹果
手机机型: iPhone6
页面类型: vue
vue版本: vue2
打包方式: 云端
项目创建方式: HBuilderX
操作步骤:
预期结果:
输出日志
输出日志
实际结果:
程序hang住
程序hang住
bug描述:
此BUG和具体App无关,预测是console.log日志族在输出ascii string时,存在BUG。
如下面的代码,在string的第一个字节为0x00时,程序不提示异常,进入到等待状态,后续代码不执行。
或者也可以用 let str = '\x00\x01\x03';这种方式,用console.log进行日志输出,可重现。
try {
let str = '';
console.log('1.str is:', str);
str = 0x00;
console.log('2.str with value 0x00 is:', str);
str = '\0';
console.log('3.str with value slash zero is:' + str);
} catch (e) {
console.warn("字符串的日志输出错误", e)
}
遇到此问题时,在其它线程有日志输出时,会带出预期输出日志,且内容不正确。如下图,我们2和3日志间相隔了30秒,是因为我们测试程序是蓝牙,蓝牙断开打印了日志
h***@163.com (作者)
非printable的字符串日志输出,这个我们可以屏蔽掉,但是问题的起因在于我们需要向蓝牙下发数据,一个设备的pdu的第一个字节定义必须是0x00,所以发现了这个问题。
屏蔽了日志,我们的程序在iOS的App模式下也是不行,怀疑在处理0x00开始的string,其它地方也存在同样的BUG