`
ak478288
  • 浏览: 72667 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

愚蠢的调试 一

阅读更多

 

        就在昨天,通过企业id发布了公司使用的一个iOS app 由于在真机调试没有发现问题。就直接替换了线上的文件。但是通过下载安装发现,开启程序后闪退,而且是每次都出现,这就让我感到非常迷茫,真机调试都是没问题的,为什么会出现如此严重的bug。立刻iPhone连接orgnizer。查看device logs 发现都是bad access错误,控制台也出现了Could not lookup ReleaseType from system version dictionary错误,我先检查了bad access定位的代码,没有发现问题。然后就查找releasetype的问题,对于这个问题网上相关资料很少,也没能帮我解决问题。我就继续从代码入手。发现都是与dispatch_queue 有关,我就把关于他的很多资料看了一遍,由于我是iOS5编译,iOS6运行,我就怀疑与dispatch_queue在5 6上的arc差异造成,然后从这个方向入手继续追查(其实我走错了道,后面说)。不断修改相关代码,重新发布,安装运行。由于通过xcode安装是没有任何问题的,因此只能这样调试。折腾下来,问题依旧。然后就在网上搜索所有相关资料。到了12点我依然没有解决问题。只能洗洗睡了,早上起来,脑子清醒了许多,抛弃了昨晚所有的想法,直接从代码入手,一句句注释掉代码,然后调试。仔细的检查代码。最终发现while 循环在应该退出的地方没有退出,会不会是这里的问题呢。修改之后,发布测试。一切正常。果然问题是这里造成的,至于为什么死循环在debug阶看不到问题,我现在还没有明白。

 

推荐一个关于 iOS Device logs调试的文章:

 http://www.raywenderlich.com/23704/demystifying-ios-application-crash-logs

 

总结一下这次的经历:

1,这是一个愚蠢的bug。 while 死循环。测试没问题不代表发布的没问题,因为还有可能存在不同机型有不同的问题。

2,上线发布没有备份线上版本,造成我只能恢复最老的版本。以后不管什么情况的更新都要做到本分前一个版本。

3,由于没有备份 + debug没有问题,造成我心里紧张,慌乱之下找问题跑偏了方向,造成很多时间的浪费。一定要淡定,否则就乱套了,脑子也就不好使了。

4,没有仔细检查代码,否则早就搞定了。虽然第一次仔细检查了,但是不全面。仔细检查包括全面细致。

5,出现 Could not lookup ReleaseType from system version dictionary 错误 可能是由于代码问题造成。

6,dispatch_release 在 iOS6 arc下不需要使用了,但是在 iOS6以前的版本arc中需要 http://stackoverflow.com/questions/8618632/does-arc-support-dispatch-queues

 

为什么是一,因为以后还有可能有别的愚蠢出现

分享到:
评论

相关推荐

    swank:愚蠢的简单静态Web服务器。 托管本地目录以进行调试

    wan 这是用于Javascript的python -m SimpleHTTPServer ,还有一些其他功能。 ... 它甚至内置了livereload和内省的隧道。 安装 npm install -g swank 用法 swank [[--ngrok | -n]] [[--watch | -w]] [[--silent | -s]] ...

    tserv:用于调试 Web 应用程序的愚蠢简单的测试服务器

    这是一个简单的测试服务器实用程序,用于调试需要从服务器运行的 Web 应用程序。 安装: sudo npm install tserv -g用法: tserv在托管所有本地文件的当前目录中启动服务器。 tserv -p 8090在端口 8090 上启动服务器

    应用程序调试的思路和技巧

    一、查找bug原因 1、了解 bug 发生的原因,规律;...1、暴力调试; 2、聪明地使用猜测; 3、假设可能造成愚蠢的 4、积极使用断言,不要讲执行代码放入断言,防止Release时该代码不被执行 5、使用日志

    noflux:JavaScript应用的简单,愚蠢的状态管理

    Noflux JavaScript应用程序的简单,愚蠢的状态管理。配套包裹版本依存关系DevDependencies 建造例子在线调试: : 。 import React , { Component } from 'react' ;import { connect , state } from '@noflux/react' ...

    devs-debug-humanity:我们喜欢愚蠢的游戏,所以我们创造了自己的游戏之一

    开发人员调试人类我们喜欢愚蠢的游戏,因此我们扩展了Cards Against Humanity,以开发者的生活方式为重点。 我们称之为-devs.Debug(humanity); 。 最酷的是-反对人类的开发者是devs.Debug(humanity); 。 因此您...

    vndr:愚蠢的供应商工具

    Vndr具有下一个命令行参数: -verbose添加其他输出,有助于调试问题。 -whitelist允许您为在供应商的最后阶段将不会清除的路径指定几个正则表达式-这对于在供应商的项目中运行测试或确保在完成vndr清理未使用的文件...

    Python日志记录(愚蠢地)变得简单-Python开发

    确实如此,但是日志记录是每个应用程序的基础,并简化了调试过程。 使用Loguru,您没有理由不从一开始就使用日志,这就像从loguru import logger一样简单。 另外,该库旨在通过添加一堆有用的功能来减轻Python日志...

    取字模软件 12864 点阵

    5月1日凌晨发布第一测试版 功能介绍: 1.生成中英文数字混合的字符串的字模数据. 2.可选择字体,大小,并且可独立调整文字的长和宽,生成任意形状的字符。 3.各种旋转,翻转文字功能 4.任意调整输出点阵大小,并...

    clu:Chlorie的小型实用程序类,函数和各种愚蠢的东西

    Chlorie的实用程序库 Chlorie的仅标头小型实用程序集合。需要C ++ 20,只要主要编译器和cmake支持标准模块,它将立即...当前包含一个verbose类,该类将其所有特殊成员函数调用记录到stdout 。 enumerate.h :类似于Py

    PCtoLCD2002_取模软件

    5月1日凌晨发布第一测试版 功能介绍: 1.生成中英文数字混合的字符串的字模数据. 2.可选择字体,大小,并且可独立调整文字的长和宽,生成任意形状的字符。 3.各种旋转,翻转文字功能 4.任意调整输出点阵大小,并...

    PCtoLCD2002 LCD仿真器

    5月1日凌晨发布第一测试版 功能介绍: 1.生成中英文数字混合的字符串的字模数据. 2.可选择字体,大小,并且可独立调整文字的长和宽,生成任意形状的字符。 3.各种旋转,翻转文字功能 4.任意调整输出点阵大小,并...

    使用VScode 插件debugger for chrome 调试react源码的方法

    代码调试,是我们前端日常工作中不可或缺的能力了吧! 在面向dom开发的时代,我们开发时直接在chrome里打断点是很方便的。 但是,当我们面向组件开发时(react),浏览器拿到的是我们编译过后的代码,还想在浏览器里...

    rails-stupid-coaching:使用Rails进行项目愚蠢的辅导”

    (用于调试) 该自述文件通常会记录启动和运行应用程序所需的所有步骤。 您可能要讲的内容: Ruby版本 系统依赖 配置 数据库创建 数据库初始化 如何运行测试套件 服务(作业队列,缓存服务器,搜索引擎等) 部署...

    Desert-or-Ocean:这是一个个人锻炼项目。(,,•₃•,,)http

    事实告诉我,我处于停顿状态是多么愚蠢。 我需要调试一下自己。 调试实际上是所有有关发现错误的内容, 了解为什么会出现该错误, 知道它的存在绝非偶然。 没有人喜欢寂寞,只是不喜欢失望。 甚至以为我曾经是。

    第一个“活机器人”开源项目 Robi-Transform-Project-master.zip

    想象一下,如果你有一只兔子或一只蜥蜴作为宠物,它们绝不会卖给你可爱的,也不会回答你的任何机智或愚蠢的问题。但我们仍然保留这样的宠物; 为什么?因为它“活着”。Rtp负责创造“活着”的感觉,我们称之为“活着...

    eclipse 开发c/c++

    Eclipse 通过 CDT 调试 MI(CDT Debug MI)插件(其组件之一)支持与机器接口(Machine Interface,MI)兼容的调试器。 但 MI 调试器究竟是什么呢?通常情况下,象 ddd 和 xxgdb(请参阅 参考资料以获得链接)之类的...

    Linux高级bash编程

    调试 30. 选项 31. Gotchas 32. 脚本编程风格 32.1. 非官方的Shell脚本风格 33. 杂项 33.1. 交互式和非交互式的shells和脚本 33.2. Shell 包装 33.3. 测试和比较: 另一种方法 33.4. 递归 33.5. 彩色...

    Advanced Bash-Scripting Guide <>

    找anagram(回文构词法, 可以将一个有意义的单词, 变换为1 个或多个有意义的单词, 但 是还是原来的子母集合) 16-1. 使用exec 重定向标准输入 16-2. 使用exec 来重定向stdout 16-3. 使用exec 在同一脚本中重定向stdin...

    WordIDE:一种可帮助您在自己喜欢的IDE中编写代码的工具

    在任何文字处理器中编写代码,WordIDE会将其转换为纯文本,以便您的愚蠢的编译器可以理解。 就这么简单$ wide compile test.odt好处手动为代码着色使用任何字体使用任何文字大小使用任何文字处理器缺点没有请注意,...

    受正则表达式启发,但可以嵌套结构-JavaScript开发

    stack-expression堆栈表达式与正则表达式...chevotrain看起来不错,但是随后它有了一个愚蠢的DSL,看起来代码太多了。 我又一次玩PEGjs,但是它生成的解析器太慢了。 真的有多难? (更新,看起来这是解析表达式语法)

Global site tag (gtag.js) - Google Analytics