bug调试要根据应用场景和条件,选择什么样子的调试方式很大程度上不是你想选择什么样的调试方式,而是还剩下什么样子的调试方式可用。下面就根据不同的场景和条件来总结一下。

目录:

1、gdb调试或者IDE自带的调试工具

2、堆栈调用

3、日志打印

4、信号函数捕捉

5、代码静态检测Cppcheck

6、内存泄漏检测valgrind

7、bugly \ breakpad

--------------------------------------正文---------------------------------------------

1、gdb调试或者IDE自带工具调试

最初级,用的最多的调试方式,适用于便开发边调试,无需多言。

https://www.cnblogs.com/wangkeqin/p/12489912.html

2、堆栈调用

适用于隐藏比较深的bug,有时调试模式中意外崩溃,或者程序运行中意外崩溃都可以使用堆栈来查看崩溃。windows中使用VS可以在崩溃中打开堆栈,查看堆栈调用关系。linux端运行中的程序崩溃了,如果需要查看堆栈,需要coredump文件,需要将coredump设定打开。

https://www.cnblogs.com/wangkeqin/p/12493307.html

3、日志打印

适用于不能调试,或者事务类的程序。一般用于追踪程序运行过程或者运行中的数据监控。可以自己写一个日志库,当然也有有很多知名的开源日志库,例如大名鼎鼎的glog。

4、打印堆栈——信号函数捕捉

利用信号钩子函数,获取堆栈信息,然后在日志中打印:

https://blog.csdn.net/Zhanganliu/article/details/88965491

配合addr2line命令 :(待写一篇文章写清楚两者的使用)

5、代码静态检测Cppcheck

代码写好编译过程中输出信息会有很多的warning,看似问题不大的warning往往在实际应用场景中会变成定时炸弹。如果选择用肉眼去修复查找这些warning在实际的工程中缺乏可行性。腾讯出品的Cppcheck是一款非常趁手的静态代码检测工具,可以帮助发现潜在的错误。

linux 命令行:https://www.jianshu.com/p/d71729b0981d

windows: https://blog.csdn.net/hellokandy/article/details/83302859

当然还有一些其他工具也非常优秀,这里给出对比链接。

https://blog.csdn.net/lovespring116/article/details/73504190

6、内存泄漏检测——Valgrind:

主要用于检测运行态的程序,主要针对野指针、内存泄漏等。这里直接给出链接:

https://www.oschina.net/translate/valgrind-memcheck

7、bugly \ breakpad

bugly出于腾讯,主要用于移动端的日志上传,当然如果说是C++的SDK和java/oc混编的程序。C++ SDK中的崩溃信息也可以抓到。breakpad出于google。可以多平台使用。

应用安装到用户那里,什么应用场景下会出问题,不得而知。单纯的日志有时显得苍白无力,幸好有bugly、breakpad这样的工具可以使用,让我们在问题发生后能够有效的分析问题。

https://www.cnblogs.com/MakeView660/p/6077436.html

https://www.jianshu.com/p/295ebf42b05b

最后,如有错误,欢迎指正!如有缺漏,欢迎补充!

C++程序调试方式总结的更多相关文章

  1. .NET应用程序调试—原理、工具、方法

    阅读目录: 1.背景介绍 2.基本原理(Windows调试工具箱..NET调试扩展SOS.DLL.SOSEX.DLL) 2.1.Windows调试工具箱 2.2..NET调试扩展包,SOS.DLL.S ...

  2. MapReducer程序调试技巧

    写过程序分布式代码的人都知道,分布式的程序是比较难以调试的,但是也不是不可以调试,对于Hadoop分布式集群来说,在其上面运行的是mapreduce程序,因此,有时候写好了mapreduce程序之后, ...

  3. Windbg程序调试--转载

    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...

  4. [安卓][转]Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  5. 程序调试手段之gdb, vxworks shell

    调试一个程序主要用到的功能: 启动程序 设置函数断点 设置数据断点 单步执行 查看内存值 修改内存值 linux下的gdb,和vxworks下的shell 虽然使用方式和调试命令略有不同,但是都能满足 ...

  6. Android eclipse中程序调试

    一:断点调试 用eclipse开发android程序的时,跟VS一样是可以断点单步调试的.步骤如下.1 设置断点:在编码窗体的左边框上用鼠标双击,或者右键点击菜单,选择 Toggle Breakpoi ...

  7. Linux Bash命令关于程序调试详解

    转载:http://os.51cto.com/art/201006/207230.htm 参考:<Linux shell 脚本攻略>Page22-23 Linux bash程序在程序员的使 ...

  8. C#编程使用到的几种调试方式

    一.前言: 使用C#语言从08年算起,到现在也有6个年头的时间了. 但 是会使用调试进行辅助编程的时间,却只有5个年头,其中第一年里面,只能傻傻地敲着老师给的案例,不会写就一遍一遍重复手写编码,上机练 ...

  9. Keil 程序调试窗口

    上一讲中我们学习了几种常用的程序调试方法,这一讲中将介绍Keil提供各种窗口如输出窗口.观察窗口.存储器窗口.反汇编窗口.串行窗口等的用途,以及这些窗口的使用方法,并通过实例介绍这些窗口在调试中的使用 ...

随机推荐

  1. C语言:基本数据类型及表示范围

    类型名称 标识符 printf()标志 占据 范围 无符号 unsigned 范围 类型名称 类型标识符    printf标志   占字节数           表示范围              ...

  2. ML-支持向量机(SVM)

    简介 支持向量机是一种二分类模型,寻找一个超平面来对样本进行分割,分割的原则是保证间隔最大化. 如果一个线性函数能够将样本分开,称这些数据样本是线性可分的. 在二维空间线性函数就是一条直线,在三维空间 ...

  3. GC垃圾回收机制详解

    JVM堆相关知识    为什么先说JVM堆?  JVM的堆是Java对象的活动空间,程序中的类的对象从中分配空间,其存储着正在运行着的应用程序用到的所有对象.这些对象的建立方式就是那些new一类的操作 ...

  4. 2021年BI软件排名,国内外BI软件功能对比

    数据分析是帮助企业深入了解自身业务表现(例如正在做什么或哪块业务需要注意和改进)的重要元素.为了获得更直观的展现,数据分析BI软件可帮助公司通过报告.数据可视化.应用程序等从数据中获取决策数据支撑.没 ...

  5. [编译] 8、在Linux下搭建 stm8 单片机的开发烧写环境(makefile版)

    目录 一.SDCC(Small Device C Compiler)编译环境搭建 1.1.下载 1.2.编译 1.3.测试 二.Hex2Bin+命令行烧写工具配置使用 2.1.下载工具安装配置 2.2 ...

  6. 货币兑换问题(贪心法)——Python实现

      # 贪心算法求解货币兑换问题 # 货币系统有 n 种硬币,面值为 v1,v2,v3...vn,其中 v1=1,使用总值money与之兑换,求如何使硬币的数目最少,即 x1,x2,x3...xn 之 ...

  7. NPM 所有的指令已经问题 使用淘宝镜像 出现code EAI_AGAIN

    windows怎么卸载cnpm? npm uninstall cnpm -g windows怎么检测cnpm是否安装成功 cnpm -v 我们直接将node的仓库地址换成淘宝仓库地址即可 单次使用 n ...

  8. npx的使用方法、场景

    目录 npx使用教程 npm与npx的概念 npx的使用场景(对比npm的一些优势) 使用场景1: 想用项目中已经安装好的某个包, 但是不能直接执行(因为没有全局安装, 涉及环境变量的问题) 使用场景 ...

  9. videojs文档翻译Guides-components

    components Components Video.js播放器的架构围绕组件. Player类和所有表示播放器控件和其他UI元素的类都继承自Component类. 这种架构使得可以轻松地以反映DO ...

  10. Verilog定点数计算

    https://blog.csdn.net/maxwell2ic/article/details/80620991 https://blog.csdn.net/mdpsdhr/article/deta ...