首页 > 其他分享 >【debugging】-调试

【debugging】-调试

时间:2023-12-07 18:22:21浏览次数:28  
标签:debugging logging 程序 指定 日志 级别 调试

【debugging】-调试

出现bug的原因

调试

  1. 调试的基本思想:是尽可能的将bug在设计时变得更容易暴露出来,将某些关键的步骤进行可能的可视化

    1. print

      • 循环里的第一行print循环变量。可视化循环范围
    2. assert -- raise

      • assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。可视化判断表达式的结果

      • 表达式成立,不报错,----------不成立——报错(报错的内容argumetns方括号中的可以没有)

      • assert expression [, arguments]
        # 上下两种表达式相互等价
        if not expression:
            raise AssertionError(arguments)
        
        
        
  2. vs code 调试

    1. 参数
      • request:是最重要的参数,它能选择两种类型,一个是launch模式,一个是attach模式:
        launch模式:由VS Code来启动一个独立的具有debug功能的程序。
        attach模式:监听一个已启动的程序(其必须已经开启debug模式)。
        大多数情况下,调试Python都是用launch模式。少数情况下,你无法通过新建独立程序来调试(如要与浏览器相结合的程序,launch模式会导致你大部分浏览器插件失效),这时候就需要attach模式。
      • justMyCode:true 只调试当前 py 文件,false 也调试引用的模块,当你需要调试模块时请确保将它修改为 false
  3. logging

    1. 日志

      • 归纳起来日志的作用有三点:
        • 进行程序(代码)的调试
        • 程序运行过程中的问题定位和分析
        • 收集程序运行的情况
      • logging中将日志等级分成如下几个(由低到高):
        DEBUG INFO WARNING ERROR CRITICAL
    2. 关键字参数

      • filename

        指定使用指定的文件名而不是 StreamHandler 创建 FileHandler。

      • filemode
        如果指定 filename,则以此模式打开文件(‘r’、‘w’、‘a’)。默认为“a”。

      • format
        为处理程序使用指定的格式字符串。

      • datefmt
        使用 time.strftime() 所接受的指定日期/时间格式。

      • style
        如果指定了格式,则对格式字符串使用此样式。’%’ 用于 printf 样式、’{’ 用于 str.format()、’$’ 用于 string。默认为“%”。

      • level
        将根记录器级别设置为指定的级别。默认生成的 root logger 的 level 是 logging.WARNING,低于该级别的就不输出了。级别排序:CRITICAL > ERROR > WARNING > INFO > DEBUG。(如果需要显示所有级别的内容,可将 level=logging.NOTSET)

      • stream
        使用指定的流初始化 StreamHandler。注意,此参数与 filename 不兼容——如果两者都存在,则会抛出 ValueError。

      • handlers
        如果指定,这应该是已经创建的处理程序的迭代,以便添加到根日志程序中。任何没有格式化程序集的处理程序都将被分配给在此函数中创建的默认格式化程序。注意,此参数与 filename 或 stream 不兼容——如果两者都存在,则会抛出 ValueError。

        这段代码主要是用来配置日志的输出的,代码会将level以上级别日志输出

    3. 当使用logging模块时,可以使用不同的日志级别来记录不同严重程度的日志信息。以下是logging模块中不同的日志级别:

      • DEBUG:最详细的日志信息,通常只在调试时使用。
      • INFO:确认一切按预期运行。
      • WARNING:表示发生了一些意外情况或潜在的问题,但程序仍然可以正常运行。
      • ERROR:由于更严重的问题,程序无法执行某些功能。
      • CRITICAL:严重错误,程序可能无法继续运行。
  4. pdb

快速掌握如何用Python debug-CSDN博客

标签:debugging,logging,程序,指定,日志,级别,调试
From: https://www.cnblogs.com/y-cw/p/17883636.html

相关文章

  • uniapp 配置 基座调试指定页面
    在用hbuildx时,用自定义基座,调试程序时,有的页面因为基座缺少组件而进不去,这个时候就可以用指定页面的方式,我们只需要把进入页面的入参传进去,这个时候打开页面就是指定要调试的页面了。就在page.json文件最后加入"condition":{//模式配置,仅开发期间生效"current":0......
  • Debugging
    参考视频链接:如何Debug调试理论开始之前,记住机器永远是对的,bug可能就在你想不到的地方bug:第一种理解错需求,第二种出现错误调试——已知有bug要怎样找调试困难根本原因需求——设计——代码(状态机)——Fault(bug)——Error(程序状态错)——Failure一旦某个环节出错代码就会错......
  • [效率大杀器] go工具篇:dlv + goland 实现远程调试
    dlv+Goland远程调试远程调试就是使用使用本地IDE来调试远程服务器上的服务。本地打断点,调用远程服务的接口。本地就会停在断点。相当于debug远程服务。优点是可以保持环境的一致性。dlv的安装git仓库:https://github.com/derekparker/delve将div安装到远程服务器。......
  • vscode-go语言插件,调试器协议分析(二)
    版本信息Server:{"Commands":["gopls.add_dependency","gopls.add_import","gopls.add_telemetry_counters","gopls.apply_fix","gopls.change_signature","gopls.check_u......
  • debug的调试
    debug的调试1.调试理论的简单介绍摆正心态,逐行尝试在计算机中,我们将机器看作状态机,同时我们遵循计算机不会犯错的原则,因此,当你设计的程序产生了与你意料相悖的结果,那就可以认为你的程序产生了bug。2.看懂报错信息逻辑错误,简单语法错误3.利用print方法调试程序逐行输出,判断......
  • vscode-go语言插件,调试器协议分析
    c客户端,vscodes服务端,调试器----------------------------------------------c-->客户端,请求调试器初始化{"command":"initialize","arguments":{"clientID":"vscode","clientName":......
  • 关于uniapp打包APP自定义基座调试,遇到首页同意网络权限后白屏问题
    解决方案:1、在App.vue文件中,onShow生命周期内添加一段代码,检测是否同意使用互联网权限:uni.onNetworkStatusChange(function(res){ console.log('onNetworkStatusChange',res); if(res.isConnected){ setTimeout(()=>{ uni.reLaunch({ url:'/pages/......
  • 云课五分钟-06一段代码调试debug-AI与人工
    前篇:云课五分钟-05一段代码修改-AI修改C++简单问题,与文心一言等工具交互一次,就能得到很满意的结果。但是,复杂问题呢,可能需要多次交互,也可能由于问题的复杂性,提问者本身描述就存在不合理的地方。  视频:云课五分钟-06一段代码调试debug-AI与人工文本:能否修改如上代码,显示彩色的......
  • HC32L110+spi 调试SX1268
    1.官网下载例程https://www.xhsc.com.cn/Productlist/info.aspx?itemid=17512.找到spi例程开始暴改改动1.en_result_tSpi_SendData(uint8_tu8Data){    uint32_tu32TimeOut;        u32TimeOut=1000;    M0P_SPI->DATA=u8Data;        wh......
  • SpringBoot项目中集成自定义公共Maven依赖如何集成与调试
    场景Nexus-在项目中使用Maven私服,Deploy到私服、上传第三方jar包、在项目中使用私服jar包:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/101391279Maven项目在pom文件中引入lib下的第三方jar包并打包进去:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/det......