首页 > 其他分享 >debug方法论

debug方法论

时间:2023-12-02 11:23:09浏览次数:29  
标签:方法论 log print 了解 debug 尽量 bug

想来今年有几次印象比较深的debug经历。每次的debug时间差不多在一周,每次也都学到一些新的调式手段。总结以下debug的经验。

第一点:debug最重要的逻辑要严密,要基于一个确定的事实用控制变量法去测试猜想。对于不确定的事实不要当成既定事实,这是debug的大忌。错误往往隐藏在下意识中。要尽量做到已知的都是经过验证的。

第二点:减少变量,尽量用最简单,最熟悉的方式去复现bug。变量太多会导致问题变得复杂,简化问题才能接近真相。

第三点:重视log。错误日志是发现问题最重要的信息,要尽量获取完整连续的log,比如使用journalctl -f可以获取连续的log,避免遗漏。对于重要的log,要完整解析,避免错过重要的信息。

第四点:善用好的工具。对与跟系统相关的bug,bpftrace,objdump,gdb等都是很好的工具,当然我觉得最好用的工具还是print,没有之一。先用print,了解大概的方向,再用那些高级的玩意去深挖。

第五点:了解软件栈。要对研究的对象工作在哪一层有清晰的认识,了解各层软件之间的交互,这对于了解事情是怎么发生的非常重要。

暂时就想到这些。

标签:方法论,log,print,了解,debug,尽量,bug
From: https://www.cnblogs.com/banshanjushi/p/17871377.html

相关文章

  • 如何在 Python 中做到类似 #ifdef DEBUG
    类似#ifndefNDEBUGdo_something(...)#elsedo_otherthing(...)#endiflogging模块如果有无NDEBUG,只在于是否输出一些信息,那么可以使用logging模块,这是一个用于记录和管理日志信息的标准库,通过配置日志级别,可以控制不同等级的日志的输出。importlogginglogging.basic......
  • nanomq clion 远程debug尝试
    很简单因为nanomq是基于cmake开发的对于clion来说基于debug就比较方便了,同时因为nanomq相关依赖都是通过模块的,还是比较方便的,以下是一个简单的debug测试环境准备基于clion的remotesshclone代码 gitclonehttps://github.com/emqx/nanomq.gitcdnanomqgitsubmoduleup......
  • clion nginx remote debug 简单说明
    社区有人共享了一个基于clion通过gdbserver进行nginx调整远程调试的实践,很不错值得学习下具体参考https://www.jianshu.com/p/3c2fdb06de9e 但是实际上我们可以直接自己配置基于clion启动remotenginx调整如下(核心是自己添加了一个debug的配置)构建makefile配置这部分,添加......
  • .net core 6 DEBUG环境下不注入的服务
    .netcore6中,如果有些服务不想在调试时启动,比如nacos及一些监听器,如果每次注释,难免会出错误。所以在Program.cs文件中写明,DEBUG环境下是不启动的:#ifDEBUG#else//Nacos服务发现注册builder.Services.AddNacosAspNet(builder.Configuration);//默认找"nacos"节//Nacos读取配......
  • 秦疆的Java课程笔记:44 流程控制 打印三角形及Debug
    作业:打印5行三角形这是我写的:publicclassTestDemo1{publicstaticvoidmain(String[]args){intline=5;//定义总行数linefor(inti=1;i<=line;i++){//i是循环输出每一行for(intj=1;j<=line-i;j++){//j......
  • VS2008 Debug
    在处理WinCE程式时调试用到的。正确DeBug的方法如下:1.将dll程序的生成路径选择到正确的路径下:具体啥路径,就看自己的程序结构了,得保证你的外部应用程序可以正常调用这个dll;2.将项目重新进行编译,并打开编译目录把编译完成的dll属性设置成......
  • Idea中使用Debug模式​详解
    Idea中使用Debug模式Debug用来追踪代码的运行流程,通常在程序运行过程中出现异常,启用Debug模式可以分析定位异常发生的位置,以及在运行过程中参数的变化。通常我们也可以启用Debug模式来跟踪代码的运行流程去学习三方框架的源码。Debug开篇首先看下IDEA中Debug模式下的界面。如下是在......
  • springBoot项目启动卡在Root WebApplicationContext: initialization completed... (非
    通过源码启动排查发现,初始化连接池时创建了200次,通过配置文件中将initialSize值改为10,启动时间从1分钟变为了3秒。 ......
  • SAP集成技术(七)集成解决方案咨询方法论(ISA-M)
    目前,ISA-M主要以MicrosoftPowerPoint演示文稿的形式提供。可以在SAPCommunity博客文章(https://blogs.sap.com/)以及关于ISA-M的SAPJam社区中找到补充性的文档和信息。尽管ISA-M是由SAP开发和维护的,但该方法论对所有SAP和非SAP集成解决方案都是开放的。因此,即使......
  • nanomq clion 远程debug尝试
    很简单因为nanomq是基于cmake开发的对于clion来说基于debug就比较方便了,同时因为nanomq相关依赖都是通过模块的,还是比较方便的,以下是一个简单的debug测试环境准备基于clion的remotesshclone代码 gitclonehttps://github.com/emqx/nanomq.gitcdna......