zoukankan      html  css  js  c++  java
  • 断点捕获

    在调试程序的时候,总是碰到crash的bug,而且一追踪就是一些汇编的代码,让人特别疑惑。

    一般情况下可以通过增加两天断点来解决此问题,方法介绍如下:

    基本上有错误分为以下几种类型:

    signal(SIGABRT, MySignalHandler);

    signal(SIGILL, MySignalHandler);

    signal(SIGSEGV, MySignalHandler);

    signal(SIGFPE, MySignalHandler);

    signal(SIGBUS, MySignalHandler);

    signal(SIGPIPE, MySignalHandler);

    SIGABRT和EXC_BAD_ACCESS较为特殊,算是比较好跟进。

    SIGABRT是系统报错,在memery warning之后,系统会把程序强制退出,报的就是这个错误。

    EXC_BAD_ACCESS 大多数时候是内存提前释放而引起的问题,或者访问的方法不存在引起的。

    追踪程序的调用stacktrace的方法,跟踪问题:

    一般出错了之后出现的常见界面,再熟悉不过了。。

    切换到breakpoint界面,拖动底端的slider按钮,显示调用堆栈

    虽然调用堆栈已经出来了,但是都是一堆的汇编代码,无法给予明确的信息。。

    剩下的就是今天要讲的问题:添加Symbol breakpoint  Exception breakpoint

    Exception breakpoint添加 的添加步骤

    一、Exception breakpoint 的添加。

    1、切换到breakpoint 视图界面

    2、点击最底端的"+"按钮,添加Add Exception BreakPoint,这个就是捕获所有的exception, 貌似stackoverflow上说,bad_access那种错误无法捕获的,这个用于捕获那些SIGSEGV 的错误。

    3、添加完成之后的界面。

    二、Symbolic breakpoint的添加

    前两步和一 基本是一样的,不截图了,只是在第二步选择的时候选 Add Symbolic BreakPoint 

    第三步截图;添加完成之后添加上objc_exception_throw

    完成,添加完成只两个断点之后,程序中很多异常也可以捕获了,直接定位到出问题的位置。

    当然程序中最好也加上异常处理的代码,可以参考这个处理,一般都是这个方式处理的

  • 相关阅读:
    微信小程序使用canvas画布实现当前页面截屏并分享
    微信小程序分享转发用法大全——自定义分享、全局分享、组合分享
    小程序条形码插件wxbarcode的使用及改进
    支付宝小程序开发——修改小程序原生radio默认样式
    常用maven配置
    Android Studio 星云常用配置工具箱
    星云最佳实践功法秘籍
    Intellij Idea 星云常用配置工具箱
    那些好用的Chrome 插件
    星云的Linux专用学习手册
  • 原文地址:https://www.cnblogs.com/keyan1102/p/4785707.html
Copyright © 2011-2022 走看看