找bug的过程

关于昨天程序出差我找bug的过程记录

昨天才程序

https://www.cnblogs.com/pythonywy/p/11006273.html

├── xxxx
│   ├── src.py
│   └── fil_mode.py
│   └── data_time.py
│   └── loading.py
│   └── data_time.py
│   └── logger.py

src.py与打印日志相关片段

if __name__ == '__main__':
    logger_start('程序主界面')
    while True:
        print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
        print("\033[0;30;42m\t\t输入4进入购物界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入5进入解冻界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
        print(38 * '-')
        user_shopping_chiose = input('请输入你要选择的功能')
        if user_shopping_chiose not in msg_dict:
            print('请好好输入')
            continue
        elif user_shopping_chiose=='q':
            print('再见')
            logger_end('程序主界面')
            break
        else:
            logger_start(f'{app_name_dict[user_shopping_chiose]}')
            msg_dict[user_shopping_chiose]()
            logger_end(f'{app_name_dict[user_shopping_chiose]}')

我将其中打印日志出现问题的地方运行,其他地方注释掉

if __name__ == '__main__':
    #logger_start('程序主界面')
    while True:
        print("\033[0;31;44m\t\t杨大爷超市欢迎您\t\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入0进入注册界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入1进入登入界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入2进入充值界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入3进入余额查询界面\t\t\033[5m")
        print("\033[0;30;42m\t\t输入4进入购物界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入5进入解冻界面\t\t\t\033[5m")
        print("\033[0;30;42m\t\t输入q退出程序 \t\t\t\t\033[5m")
        print(38 * '-')
        user_shopping_chiose = input('请输入你要选择的功能')
        if user_shopping_chiose not in msg_dict:
            print('请好好输入')
            continue
        elif user_shopping_chiose=='q':
            print('再见')
            logger_end('程序主界面')
            break
        else:
            logger_start(f'{app_name_dict[user_shopping_chiose]}')
            msg_dict[user_shopping_chiose]()
            #logger_end(f'{app_name_dict[user_shopping_chiose]}')

生成的日志

top_up程序启动时间:2019-06-12 17:37:53  #运行一次top_up功能

top_up程序启动时间:2019-06-12 17:37:55  #运行两次top_up功能
top_up程序启动时间:2019-06-12 17:37:55

top_up程序启动时间:2019-06-12 17:37:57  #运行三次top_up功能
top_up程序启动时间:2019-06-12 17:37:57
top_up程序启动时间:2019-06-12 17:37:57

top_up程序启动时间:2019-06-12 17:37:58  #运行四次top_up功能
top_up程序启动时间:2019-06-12 17:37:58
top_up程序启动时间:2019-06-12 17:37:58
top_up程序启动时间:2019-06-12 17:37:58

我们发现他运行后内侧应该还存在日志相关函数,我们这时候看看原来的函数

logger.py

def logger_start(app):
    logger_login = logging.getLogger('start')
    fli_show = logging.FileHandler('app.log')
    logger_format = logging.Formatter('%(message)s程序启动时间:%(asctime)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(app)

#这时候我又三种想法,
#第一种把函数return出来,每次赋予不同的变量名,这里可以用时间生成函数来进行保证每次函数名不一样
#第二种找可能会出现相同地方'logger_login'这个名字
#第三种找可能会出现相同地方logging.getLogger('start')中('start')这个名字

我选择最容易修改的第三种进行修改

import logging
from data_time import data_time
def logger_login(user):
    logger_login = logging.getLogger(data_time()) #这是我自定义的一个函数返回值是当前时间每次都会不同
    fli_show = logging.FileHandler('user_login.log')
    logger_format = logging.Formatter('登入时间:%(asctime)s  %(levelname)s-用户:%(message)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(user)

def logger_exit(user):
    logger_login = logging.getLogger(data_time())
    fli_show = logging.FileHandler('user_login.log')
    logger_format = logging.Formatter('退出时间:%(asctime)s  %(levelname)s-用户:%(message)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(user)

def logger_start(app):
    logger_login = logging.getLogger(data_time())
    fli_show = logging.FileHandler('app.log')
    logger_format = logging.Formatter('%(message)s程序启动时间:%(asctime)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(app)

def logger_end(app):
    logger_login = logging.getLogger(data_time())
    fli_show = logging.FileHandler('app.log')
    logger_format = logging.Formatter('%(message)s程序关闭时间:%(asctime)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(app)

def logger_shopping(user,car):
    logger_login = logging.getLogger(data_time())
    fli_show = logging.FileHandler('user_shopping.log')
    logger_format = logging.Formatter('%(asctime)s  %(levelname)s-%(message)s',
                     datefmt='%Y-%m-%d %X' )
    fli_show.setFormatter(logger_format)
    logger_login.addHandler(fli_show)
    logger_login.setLevel(10)
    logger_login.info(user,car)

最后呢解决了

原文地址:https://www.cnblogs.com/pythonywy/p/11011532.html

时间: 2024-10-14 11:39:19

找bug的过程的相关文章

第二次作业:找Bug

引子 我真的想了一个小时,上哪里去找bug.我昨天还留意到一个bug,今天就不见了.灵光不断,我想起来了.我就要找大公司的产品的bug... 第一部分 调研, 评测 体验. <腾讯桌球>是腾讯首款重磅推出的桌球对战游戏,使用自研物理引擎高度还原真实桌球操作,界面精美,球杆酷炫,操作流畅.集多种玩法,给玩家更多体验.  --官方游戏介绍 好久没玩,操作几把. 实力依旧,我在等待BUG的出现. 按照<构建之法>13.1节描述的 bug 定义, 找出几个功能性的比较严重的 bug. bu

【软件测试】软件测试是找bug,不是找茬

前两天和一个新认识的朋友聊天 "你是码农吗?" 我那个气啊,我这个形象像吗?像吗?真想抽他丫的 "不是,我是做软件测试的,代码用的没有那么多,所以称不上" "哦!那你就是专门挑毛病,找茬的呗?" 当时我就认定了这个朋友拜拜了您内 "我是做测试的,找的是缺陷,不是找茬,谢谢您老了,先忙,再见" 回家了之后我就想分享一下: 第一: 测试是找bug,不是找茬.以前在外包做测试,面对的之间人是PM,面对所谓的客户是开发软件的人,而且因

STM32 .ld链接文件分析及一次bug解决过程

目录 STM32 .ld链接文件分析及一次bug解决过程 问题描述 解决办法 ld文件解析 后续 STM32 .ld链接文件分析及一次bug解决过程 问题描述 原子板的代码中含有一个关于使用外部SRAM的功能,由于本人的开发板的SRAM只有512K,因此稍微修改了一下代码,同时使用GCC进行编译,但是这里却报错了,源码如下: //内存池(4字节对齐) __align(4) u8 mem1base[MEM1_MAX_SIZE]; __align(4) u8 mem2base[MEM2_MAX_SI

HUAWEI TAG-AL00 找IMEI的过程

前几天,遇到一台华为机型,IMEI获取有问题,然后就找了一下. 以下是解决过程,权当记录一下,尽管为知笔记已经有备份了 :) 0x01: 起因 测试小哥发现,一台机型IMEI获取不全,有问题,拨号页面获取出来 MEID/IMEI1/IMEI2 而我们只能获取 其中两个,丢了一个   然后抱着手机过来问能不能处理一下,型号为: HUAWEI TAG-AL00 我抱着试试看的态度,跑了一下之前获取方式,果然少了一个,然后就开始找哪里出了问题. 0x02:过程 a. 准备工作,找apk文件和位置 既然

程序员新人怎样在复杂代码中找 bug?

分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治.比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好

程序员怎样在复杂代码中找 bug?(简单)

分享下我的debug的经验 1. 优先解决那些可重现的,可重现的bug特别好找,反复调试测试就好了,先把好解决的干掉,这样最节约时间. 2. 对于某些bug没有头绪或者现象古怪不知道从哪里下手,找有经验的同事问一下思路,因为在那种开发多年的大型系统里,经常会反复出现同样原因的bug,原因都类似,改了一处,过一阵子另外一处又冒出来,而且无法根治.比如:我那个系统里有个特别危险的API,接口参数比较难用,一旦有人用错了某些情况下就会出诡异的现象,解决很简单,找到调用这个API的地方把调用方式写对就好

POJ 2096 找bug 期望dp

题目大意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcomponent,问他找到所有的bugs和subcomponents的期望次数. 这道题目要用期望dp来进行统计 假设已经找到i个bug和j个subcomponents,这个状态记为dp[i][j],那么下次查找会出现4种状态:dp[i][j],dp[i+1][j],dp[i][j+1],dp[i+1][j+

一次寻找IBatisNet事务bug的过程

本文的上下文环境 操作系统:Win7 x64 Professional 开发工具:Visual Studio 2017   语言:C# 数据库ORM:IBatisNet 1.6.2 一.前言 这个项目的前端有Web端,公众号,微信小程序,后端是用WCF写的,部署成windows service.后端使用了IBatisNet这样的轻量级ORM框架,sql是写在xml里面的,每个模块都有一个xml文件.sql的返回值对应的实体类配置在同一个xml文件里,像这样. 二.问题出现 这个项目一直运行的很正

XXrl找bug hhh

http://oj.acm.zstu.edu.cn/JudgeOnline/problem.php?id=4434 没有用队列,疯狂找不到bug,后来发现很简单的判断时==n和m了,本来心花怒放,测试数据也过了.然而,呜呼,许久不见的re: 好的,re,re,重新,重新!! 然而,不死心的在开更大一点,发现是WA. 那什么时候bfs用数组就行了呢.. 1 #include<cstdio> 2 #include<cmath> 3 #include<cstring> 4 #