学会如何调试程序bug

Posted WCK的博客

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了学会如何调试程序bug相关的知识,希望对你有一定的参考价值。

前言:---------- >学会如何调试程序bug<----------
  • 1.在开发中如何调试程序 ------------------(请看==》步骤一 至步骤 五)
  • 2.使用过哪些调试工具 ---------------------腾讯的 bugly
  • 3.程序上线后,如何收集错误信息---------(请看==》步骤 六)
  • 4.bugly演示 --------------------------------- (请看==》步骤 六)
  • 5.NSLog进行调试 --------------------------请看小结后-NSLog调试
案例分析:

步骤 一

  1. 创建一个项目,叫 "调试-01-crash".
  2. 假如,我们在这个项目中写一段错误的代码。如下:

    技术分享
    错误代码示例


    步骤 二
    cmd + R,运行一下,会报下面这个错误,如下图所示: (插入一个空对象在1的索引位置)

    技术分享
    错误解析


    步骤 三
    这时我们就会想,我们在哪里犯了错误,在哪里插入了空对象,并有到处翻bug的冲动。但是我们这时设想我们会有上百个文件,我们怎么找呢?
    -------------采用调用堆栈的方法-------------

    先执行的在下面,后执行的在上面。
    技术分享
    调用堆栈


    调用堆栈的详解
    首先,要看一下,调用堆栈给我们带来了哪些信息,比如说上图所示,

    ① 程序启动的时候调用       -[UIWindow makeKeyAndVisible]
      ====>(在往上看) 
    ② viewController调用     - [viewController viewDidLoad]
                            - [viewController demoCrash]
    
    ③ 然后看下面这个,在一个数组中试图插入一个对象
                            + [NSArray arrayWithObjects:count:]
    ④ 在看到这个              -[__NSPlaceholderarray initwithObjects:count:]  
    ⑤ 在往上看就崩溃了
     这时,我们就知道了,在 #demoCrash# 方法中出现了上面所描述的错误。
    ⑥ 分析完毕

    步骤 四
    找到错误,定位方法如下图所示:

    技术分享
    找方法
    技术分享
    定位方法


    步骤 五
    如果该项目,在真机上运行时,会怎么样?

    ** 项目会提示错误信息,调用堆栈不会显示。**
    技术分享
    真机运行-显示结果

程序上线后,如何收集错误信息

步骤 六
这时,我们思考一个问题,任何一个程序员,在做项目的时候都有可能会出现错误,比如说程序在上架的时候很有可能,有些错误没有改掉,或者说在测试的时候没有发现,就重复上架了。这时候,当用户运行时,就会产生崩溃。
===》那我们,出现一个问题,程序上线后,我们该如何收集错误信息呢?
对与这个,我们会通常,用第三方框架,在这里我们就用,QQ的bugly进行演示。

技术分享
bugly演示


步骤 七 我们用QQ扫一扫,登录一下。就会进入下面的界面。
按照下面进行操作如图所示:

技术分享
技术分享
技术分享


注册完毕后,会让我们,下载SDK,查看产品信息。
如下所示:

技术分享
技术分享
下载SDK
技术分享
点击后进入这个界面
技术分享
看使用指南Pod集成
技术分享
pod集成


pod集成完之后---> 初始化SDK

技术分享
初始化SDK


然后,我们找到 APPid

技术分享
1
技术分享
2
技术分享
3


appid 填写到工程中,如下:

技术分享
代码示例


到这个时候,基本完成,我们运行一下程序。会看到下面这张图,里面什莫错误也没发现。刷新一下,也看不到崩溃日志。

技术分享


原因:一般我们程序运行,发生崩溃,都会停留在下面这张图中所显示。它就是一个断点,断点停留在这里了,程序后面代码就不执行了,不执行的话,错误信息就提交不上去。

技术分享


我们把程序安装到真机,运行一下,会出现闪退的现象。
在刷新一下,图上这个界面,会出现下面,找到日志,如下图:

技术分享


点击错误日志后会出现如下图:

技术分享


重点看这里:

技术分享


通过上图我们会发现一个什莫细节呢?
我们导入了腾讯的第三方框架之后,即便我们的程序上架了,我们也可以知道这个应用程序会崩溃到哪里。

小结

1.写在第一句

技术分享
细节


2.金玉良言

技术分享
金玉良言
NSLog调试

步骤一
创建一个名为"NSLog"的项目工程,在创建一个PCH文件。如下图:

技术分享
PCH创建


cmd + B 编译一下
假如,我们这个程序使用了两年了,我们一直用的NSLog进行的调试,突然一想,把NSLog替换掉。那我们就考虑用PCH.如下图:

技术分享
1
技术分享
2
技术分享
3
技术分享
4
技术分享
5


main:我们要使NSLog打印的更漂亮可以对其进行如下图的设置:

技术分享
建议






















































































以上是关于学会如何调试程序bug的主要内容,如果未能解决你的问题,请参考以下文章

从零到一: 代码调试

学会调试,让你也成为改bug能手

学会调试,让你也成为改bug能手

深入学习 Intellij IDEA 调试技巧

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

C/调试实用技巧—作为程序员应如何面对并尝试解决Bug?