• 第17课 调试程序


    一、调试程序

    1、为什么要调试

    1)程序往往不像我们设想的那样运行

    2)调试可以定位问题的根源所在,从而解决问题。

    2、调试方法

    1)断点+跟踪,举例如下:

    '''
    现有一个数据库记录文件(见附件0005_1.txt),保存了学生课程签到的数据库记录。 内容格式如下 ,
    
    ('2017-03-13 11:50:09', 271, 131),
    ('2017-03-14 10:52:19', 273, 131),
    ('2017-03-13 11:50:19', 271, 126),
    每一行记录保存了学生的一次签到信息。
    
    每一次签到信息的记录,分为三个部分, 分别是签到时间、签到课程的id号、签到学生的id号
    
    要求大家实现下面的函数。其中参数fileName 为 数据库记录文件路径, 输出结果是将数据库记录文件中的学生签到信息保存在一个字典对象中,并作为返回值返回。
    
    def putInfoToDict(fileName):
    
    要求返回的字典对象的格式是这样的:
    
    key 是各个学生的id号, value是 该学生的签到信息
    
       其中value,里面保存着该学生所有签到的信息
    
           其中每个签到的信息是字典对象,有两个元素: key 是lessonid的 记录课程id,key是checkintime的 记录签到时间
    
    比如,对于上面的示例中的3条记录,相应的返回结果如下:
    
    {
        131: [
            {'lessonid': 271,'checkintime':'2017-03-13 11:50:09'},
            {'lessonid': 273,'checkintime':'2017-03-14 10:52:19'},
        ],
    
    
        126: [
            {'lessonid': 271,'checkintime':'2017-03-13 11:50:19'},
        ],
    
    }

    需求分解:

    1、学生课程签到信息

    1)时间、课程ID、学生ID

    2)格式:有特定要求

    2、要求:

    1)定义一个函数:def putInfoToDict(fileName)

    2)return ----dict

    3)格式输出:

            {
                学生ID:
                        [
                            {课程ID:XXXXX, 签到时间:XXXX}
                            {课程ID:XXXX, 签到时间:XXXX}
    
                        ]
            }

    思路分解

    1、获取信息

    1)1、userId       2、lessonId  3、checkTime:从数据库文件获取

      读取文件:'/'       '\'       r' '

      with open('fileDir') as rFile == open ('fileDir')

    2)lines = rFile.read().splitlines()---读取每行内容

    3)组织dict,格式打印

    a、from pprint import pprint----美化打印

          pprint(filedir)

    2、debug知识点汇总

    1)打完断点用debug模式运行

    2)断点停留的行,并没有执行

    3)如果需要直接从第一个断点跳转到第二个断点,方法如下:

    a、当程序停在第一个断点的时候,点击debug按钮

    b、然后点击菜单栏的Run—>Resume Programs,直接跳转到第二个断点

     

    4)在调试的时候,经常遇到以下几个按钮,这里给出说明

    a、Step Over:在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。有一点,经过我们简单的调试,在不存在子函数的情况下是和Step Into效果一样的(简而言之,越过子函数,但子函数会执行)。

    b、Step Into:单步执行,遇到子函数就进入并且继续单步执行(简而言之,进入子函数)。

    c、Step Into My Code:进入自己编写的函数,不进入系统函数,很少用到。

    d、Force Step Into:强制进入,在调试的时候能进入任何方法

     

    e、Step Out:当单步执行到子函数内时,用Step Out就可以执行完子函数余下部分,并返回到上一层函数。

    f、Run to Cursor:一直执行,到光标处停止,用在循环内部时,点击一次就执行一个循环。

    作者:polyhedronx 
    来源:CSDN 
    原文:https://blog.csdn.net/polyhedronx/article/details/81514437

    g、 重新进行debug

    h、viewbreakpoints:显示所有断点

    并且可以选择或者取消

     

    参考代码如下:

    import pprint
    fileDir = '0005_1.txt'
    def putInfoToDict(fileName):
        outInfoDict = {}
        with open(fileDir) as rFile:
            lines = rFile.read().splitlines()
            for line in lines:
                line = line.replace('(', '').replace(')', '').replace("'", '').replace('	', '').replace(';', '')
                temp = line.split(',')
                userId = int(temp[2].strip())
                lessonId = int(temp[1].strip())
                checkTime = temp[0].strip()
                toDict = {'lessonid': lessonId, 'checktime': checkTime}
                if userId not in outInfoDict:  # 如果userId(key)没在这个字典中
                    outInfoDict[userId] = []  # 则先添加这个key的value为空列表
                outInfoDict[userId].append(toDict)  # 然后再添加key和value到outInfoDict
        return outInfoDict
    
    pprint.pprint(putInfoToDict(fileDir))

    执行结果如下:

    {34: [{'checktime': '2017-03-13 12:00:18', 'lessonid': 271}],
     35: [{'checktime': '2017-03-13 11:52:07', 'lessonid': 271},
          {'checktime': '2017-03-14 00:53:26', 'lessonid': 272},
          {'checktime': '2017-03-14 11:50:59', 'lessonid': 273}],
     37: [{'checktime': '2017-03-13 11:52:44', 'lessonid': 271},
          {'checktime': '2017-03-14 11:56:43', 'lessonid': 273},
          {'checktime': '2017-03-16 00:53:36', 'lessonid': 274}],
     38: [{'checktime': '2017-03-13 11:51:48', 'lessonid': 271},
          {'checktime': '2017-03-14 00:50:07', 'lessonid': 272},
          {'checktime': '2017-03-14 11:51:54', 'lessonid': 273},
          {'checktime': '2017-03-16 00:50:06', 'lessonid': 274}],
     39: [{'checktime': '2017-03-14 12:06:28', 'lessonid': 273}],
     40: [{'checktime': '2017-03-13 11:52:01', 'lessonid': 271},
          {'checktime': '2017-03-14 12:06:04', 'lessonid': 273}],
     43: [{'checktime': '2017-03-13 11:52:46', 'lessonid': 271},
          {'checktime': '2017-03-14 11:51:00', 'lessonid': 273}],
     45: [{'checktime': '2017-03-13 12:02:27', 'lessonid': 271},
          {'checktime': '2017-03-14 00:55:49', 'lessonid': 272},
          {'checktime': '2017-03-14 11:58:01', 'lessonid': 273}],
     46: [{'checktime': '2017-03-13 11:59:18', 'lessonid': 271},
          {'checktime': '2017-03-14 11:57:26', 'lessonid': 273}],
     51: [{'checktime': '2017-03-13 11:51:41', 'lessonid': 271},
          {'checktime': '2017-03-14 00:51:12', 'lessonid': 272},
          {'checktime': '2017-03-14 11:55:04', 'lessonid': 273},
          {'checktime': '2017-03-16 00:54:52', 'lessonid': 274}],
     53: [{'checktime': '2017-03-13 11:51:41', 'lessonid': 271},
          {'checktime': '2017-03-14 11:56:59', 'lessonid': 273}],
     54: [{'checktime': '2017-03-14 00:56:23', 'lessonid': 272},
          {'checktime': '2017-03-14 12:03:42', 'lessonid': 273}],
     55: [{'checktime': '2017-03-13 11:56:44', 'lessonid': 271},
          {'checktime': '2017-03-14 11:53:56', 'lessonid': 273},
          {'checktime': '2017-03-16 00:58:57', 'lessonid': 274}],
     56: [{'checktime': '2017-03-13 11:53:39', 'lessonid': 271},
          {'checktime': '2017-03-14 00:52:16', 'lessonid': 272},
          {'checktime': '2017-03-14 11:52:24', 'lessonid': 273},
          {'checktime': '2017-03-16 01:07:59', 'lessonid': 274}],
     57: [{'checktime': '2017-03-16 00:50:40', 'lessonid': 274}],
     59: [{'checktime': '2017-03-14 11:51:32', 'lessonid': 273}],
     60: [{'checktime': '2017-03-13 12:05:52', 'lessonid': 271},
          {'checktime': '2017-03-14 11:57:14', 'lessonid': 273},
          {'checktime': '2017-03-16 01:03:04', 'lessonid': 274}],
     61: [{'checktime': '2017-03-13 11:58:18', 'lessonid': 271},
          {'checktime': '2017-03-14 01:07:16', 'lessonid': 272},
          {'checktime': '2017-03-14 11:57:50', 'lessonid': 273}],
     62: [{'checktime': '2017-03-16 00:58:14', 'lessonid': 274}],
     64: [{'checktime': '2017-03-13 11:51:32', 'lessonid': 271},
          {'checktime': '2017-03-14 00:54:01', 'lessonid': 272},
          {'checktime': '2017-03-14 11:52:50', 'lessonid': 273},
          {'checktime': '2017-03-16 00:51:37', 'lessonid': 274}],
     66: [{'checktime': '2017-03-13 11:59:01', 'lessonid': 271}],
     67: [{'checktime': '2017-03-13 11:51:48', 'lessonid': 271},
          {'checktime': '2017-03-14 00:51:51', 'lessonid': 272},
          {'checktime': '2017-03-14 11:50:13', 'lessonid': 273},
          {'checktime': '2017-03-16 00:51:09', 'lessonid': 274}],
     68: [{'checktime': '2017-03-13 11:52:21', 'lessonid': 271},
          {'checktime': '2017-03-14 11:59:06', 'lessonid': 273},
          {'checktime': '2017-03-16 00:50:13', 'lessonid': 274}],
     69: [{'checktime': '2017-03-13 11:58:01', 'lessonid': 271},
          {'checktime': '2017-03-14 11:55:56', 'lessonid': 273}],
     70: [{'checktime': '2017-03-16 00:56:55', 'lessonid': 274}],
     71: [{'checktime': '2017-03-13 11:58:03', 'lessonid': 271}],
     74: [{'checktime': '2017-03-13 11:58:29', 'lessonid': 271},
          {'checktime': '2017-03-14 00:57:44', 'lessonid': 272},
          {'checktime': '2017-03-14 11:53:24', 'lessonid': 273}],
     75: [{'checktime': '2017-03-13 12:00:14', 'lessonid': 271},
          {'checktime': '2017-03-14 00:55:50', 'lessonid': 272},
          {'checktime': '2017-03-14 11:52:45', 'lessonid': 273},
          {'checktime': '2017-03-16 00:51:58', 'lessonid': 274}],
     76: [{'checktime': '2017-03-13 11:58:30', 'lessonid': 271},
          {'checktime': '2017-03-14 11:57:51', 'lessonid': 273}],
     77: [{'checktime': '2017-03-13 11:52:14', 'lessonid': 271},
          {'checktime': '2017-03-14 11:55:11', 'lessonid': 273},
          {'checktime': '2017-03-16 00:50:37', 'lessonid': 274}],
     78: [{'checktime': '2017-03-13 11:54:17', 'lessonid': 271},
          {'checktime': '2017-03-14 00:58:36', 'lessonid': 272},
          {'checktime': '2017-03-14 12:01:29', 'lessonid': 273},
          {'checktime': '2017-03-16 00:52:33', 'lessonid': 274}],
     79: [{'checktime': '2017-03-13 11:50:55', 'lessonid': 271},
          {'checktime': '2017-03-16 00:50:15', 'lessonid': 274}],
     81: [{'checktime': '2017-03-13 11:52:30', 'lessonid': 271},
          {'checktime': '2017-03-14 11:51:18', 'lessonid': 273}],
     82: [{'checktime': '2017-03-13 11:51:41', 'lessonid': 271},
          {'checktime': '2017-03-14 11:58:11', 'lessonid': 273}],
     83: [{'checktime': '2017-03-13 11:59:14', 'lessonid': 271},
          {'checktime': '2017-03-14 01:04:52', 'lessonid': 272},
          {'checktime': '2017-03-14 11:56:55', 'lessonid': 273},
          {'checktime': '2017-03-16 01:03:06', 'lessonid': 274}],
     85: [{'checktime': '2017-03-13 11:50:25', 'lessonid': 271},
          {'checktime': '2017-03-14 00:50:34', 'lessonid': 272},
          {'checktime': '2017-03-14 11:51:07', 'lessonid': 273},
          {'checktime': '2017-03-16 00:53:45', 'lessonid': 274}],
     87: [{'checktime': '2017-03-13 12:05:23', 'lessonid': 271},
          {'checktime': '2017-03-14 00:51:25', 'lessonid': 272},
          {'checktime': '2017-03-14 11:53:44', 'lessonid': 273}],
     88: [{'checktime': '2017-03-13 11:56:58', 'lessonid': 271}],
     90: [{'checktime': '2017-03-13 11:54:27', 'lessonid': 271},
          {'checktime': '2017-03-14 00:56:13', 'lessonid': 272}],
     91: [{'checktime': '2017-03-13 11:58:53', 'lessonid': 271},
          {'checktime': '2017-03-14 11:53:37', 'lessonid': 273}],
     92: [{'checktime': '2017-03-14 11:51:52', 'lessonid': 273}],
     93: [{'checktime': '2017-03-13 12:00:39', 'lessonid': 271}],
     94: [{'checktime': '2017-03-13 12:03:30', 'lessonid': 271},
          {'checktime': '2017-03-14 11:52:08', 'lessonid': 273}],
     95: [{'checktime': '2017-03-13 12:07:28', 'lessonid': 271},
          {'checktime': '2017-03-14 01:02:38', 'lessonid': 272},
          {'checktime': '2017-03-14 11:53:02', 'lessonid': 273},
          {'checktime': '2017-03-16 01:02:47', 'lessonid': 274}],
     96: [{'checktime': '2017-03-13 11:56:04', 'lessonid': 271},
          {'checktime': '2017-03-14 00:56:02', 'lessonid': 272},
          {'checktime': '2017-03-14 12:02:44', 'lessonid': 273},
          {'checktime': '2017-03-16 00:59:30', 'lessonid': 274}],
     98: [{'checktime': '2017-03-13 11:51:43', 'lessonid': 271},
          {'checktime': '2017-03-14 00:54:50', 'lessonid': 272},
          {'checktime': '2017-03-14 11:56:55', 'lessonid': 273},
          {'checktime': '2017-03-16 00:50:25', 'lessonid': 274}],
     99: [{'checktime': '2017-03-13 11:54:24', 'lessonid': 271},
          {'checktime': '2017-03-14 11:58:07', 'lessonid': 273}],
     101: [{'checktime': '2017-03-13 11:57:14', 'lessonid': 271}],
     102: [{'checktime': '2017-03-13 12:05:30', 'lessonid': 271},
           {'checktime': '2017-03-14 00:56:35', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:24', 'lessonid': 273},
           {'checktime': '2017-03-16 00:54:26', 'lessonid': 274}],
     103: [{'checktime': '2017-03-13 11:55:22', 'lessonid': 271},
           {'checktime': '2017-03-14 11:51:10', 'lessonid': 273},
           {'checktime': '2017-03-16 00:54:48', 'lessonid': 274}],
     104: [{'checktime': '2017-03-13 11:55:49', 'lessonid': 271},
           {'checktime': '2017-03-14 00:54:22', 'lessonid': 272},
           {'checktime': '2017-03-14 11:54:40', 'lessonid': 273},
           {'checktime': '2017-03-16 00:51:11', 'lessonid': 274}],
     105: [{'checktime': '2017-03-14 11:51:17', 'lessonid': 273}],
     106: [{'checktime': '2017-03-13 11:55:28', 'lessonid': 271},
           {'checktime': '2017-03-14 11:51:11', 'lessonid': 273}],
     107: [{'checktime': '2017-03-13 11:57:33', 'lessonid': 271},
           {'checktime': '2017-03-14 01:05:49', 'lessonid': 272},
           {'checktime': '2017-03-14 12:02:18', 'lessonid': 273},
           {'checktime': '2017-03-16 00:50:49', 'lessonid': 274}],
     108: [{'checktime': '2017-03-13 11:52:13', 'lessonid': 271},
           {'checktime': '2017-03-14 00:51:34', 'lessonid': 272},
           {'checktime': '2017-03-14 11:50:46', 'lessonid': 273}],
     109: [{'checktime': '2017-03-13 11:50:44', 'lessonid': 271},
           {'checktime': '2017-03-14 11:56:23', 'lessonid': 273}],
     110: [{'checktime': '2017-03-13 11:51:58', 'lessonid': 271},
           {'checktime': '2017-03-14 00:53:51', 'lessonid': 272},
           {'checktime': '2017-03-14 11:52:20', 'lessonid': 273},
           {'checktime': '2017-03-16 00:53:03', 'lessonid': 274}],
     111: [{'checktime': '2017-03-13 11:56:32', 'lessonid': 271},
           {'checktime': '2017-03-14 11:57:24', 'lessonid': 273},
           {'checktime': '2017-03-16 00:52:15', 'lessonid': 274}],
     113: [{'checktime': '2017-03-13 12:00:08', 'lessonid': 271},
           {'checktime': '2017-03-14 00:59:01', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:40', 'lessonid': 273},
           {'checktime': '2017-03-16 00:59:30', 'lessonid': 274}],
     114: [{'checktime': '2017-03-13 11:54:47', 'lessonid': 271},
           {'checktime': '2017-03-14 00:51:29', 'lessonid': 272},
           {'checktime': '2017-03-14 11:51:28', 'lessonid': 273},
           {'checktime': '2017-03-16 00:51:31', 'lessonid': 274}],
     115: [{'checktime': '2017-03-13 11:52:18', 'lessonid': 271},
           {'checktime': '2017-03-14 00:50:13', 'lessonid': 272},
           {'checktime': '2017-03-14 11:51:19', 'lessonid': 273},
           {'checktime': '2017-03-16 00:50:17', 'lessonid': 274}],
     116: [{'checktime': '2017-03-13 11:51:02', 'lessonid': 271},
           {'checktime': '2017-03-14 00:52:11', 'lessonid': 272},
           {'checktime': '2017-03-14 11:52:56', 'lessonid': 273},
           {'checktime': '2017-03-16 00:50:04', 'lessonid': 274}],
     118: [{'checktime': '2017-03-13 11:50:31', 'lessonid': 271}],
     119: [{'checktime': '2017-03-13 11:50:34', 'lessonid': 271},
           {'checktime': '2017-03-14 11:55:13', 'lessonid': 273}],
     120: [{'checktime': '2017-03-14 11:50:31', 'lessonid': 273},
           {'checktime': '2017-03-16 00:58:28', 'lessonid': 274}],
     121: [{'checktime': '2017-03-13 11:50:58', 'lessonid': 271},
           {'checktime': '2017-03-14 00:55:18', 'lessonid': 272},
           {'checktime': '2017-03-14 11:50:25', 'lessonid': 273},
           {'checktime': '2017-03-16 00:56:13', 'lessonid': 274}],
     122: [{'checktime': '2017-03-13 11:51:39', 'lessonid': 271},
           {'checktime': '2017-03-14 00:57:06', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:33', 'lessonid': 273},
           {'checktime': '2017-03-16 00:53:23', 'lessonid': 274}],
     123: [{'checktime': '2017-03-13 11:51:38', 'lessonid': 271},
           {'checktime': '2017-03-14 00:57:08', 'lessonid': 272},
           {'checktime': '2017-03-16 00:54:19', 'lessonid': 274}],
     124: [{'checktime': '2017-03-16 00:56:58', 'lessonid': 274}],
     125: [{'checktime': '2017-03-13 11:51:05', 'lessonid': 271},
           {'checktime': '2017-03-14 00:54:55', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:04', 'lessonid': 273},
           {'checktime': '2017-03-16 01:00:03', 'lessonid': 274}],
     126: [{'checktime': '2017-03-13 11:50:19', 'lessonid': 271},
           {'checktime': '2017-03-14 00:50:53', 'lessonid': 272},
           {'checktime': '2017-03-14 11:50:49', 'lessonid': 273},
           {'checktime': '2017-03-16 00:57:22', 'lessonid': 274}],
     127: [{'checktime': '2017-03-13 11:52:27', 'lessonid': 271},
           {'checktime': '2017-03-14 11:58:47', 'lessonid': 273}],
     128: [{'checktime': '2017-03-13 11:51:44', 'lessonid': 271}],
     129: [{'checktime': '2017-03-13 11:52:22', 'lessonid': 271},
           {'checktime': '2017-03-14 00:52:11', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:31', 'lessonid': 273},
           {'checktime': '2017-03-16 00:52:54', 'lessonid': 274}],
     130: [{'checktime': '2017-03-13 11:54:19', 'lessonid': 271},
           {'checktime': '2017-03-14 01:04:26', 'lessonid': 272},
           {'checktime': '2017-03-14 11:53:39', 'lessonid': 273},
           {'checktime': '2017-03-16 01:02:29', 'lessonid': 274}],
     131: [{'checktime': '2017-03-13 11:50:09', 'lessonid': 271},
           {'checktime': '2017-03-14 00:51:38', 'lessonid': 272},
           {'checktime': '2017-03-14 11:52:02', 'lessonid': 273},
           {'checktime': '2017-03-16 00:55:41', 'lessonid': 274}],
     132: [{'checktime': '2017-03-13 12:06:41', 'lessonid': 271}],
     133: [{'checktime': '2017-03-13 11:53:10', 'lessonid': 271},
           {'checktime': '2017-03-14 00:53:31', 'lessonid': 272},
           {'checktime': '2017-03-14 11:52:52', 'lessonid': 273},
           {'checktime': '2017-03-16 00:58:27', 'lessonid': 274}],
     134: [{'checktime': '2017-03-13 12:06:31', 'lessonid': 271}],
     135: [{'checktime': '2017-03-13 11:59:40', 'lessonid': 271},
           {'checktime': '2017-03-14 00:58:14', 'lessonid': 272},
           {'checktime': '2017-03-14 12:00:07', 'lessonid': 273},
           {'checktime': '2017-03-16 00:51:30', 'lessonid': 274}],
     136: [{'checktime': '2017-03-14 11:56:54', 'lessonid': 273}],
     138: [{'checktime': '2017-03-14 11:53:33', 'lessonid': 273}],
     139: [{'checktime': '2017-03-14 11:58:32', 'lessonid': 273}],
     141: [{'checktime': '2017-03-14 11:50:15', 'lessonid': 273}],
     142: [{'checktime': '2017-03-14 11:55:46', 'lessonid': 273},
           {'checktime': '2017-03-16 00:51:19', 'lessonid': 274}]}

    二、问题分析

    1、方法

    1)debug常见于开发环境

    2)查看关键变量的值

    3)print信息或者log,常见于生产环境

    2、两种方式的比较

    1)print方式

    常见于没有IDE的时候:

    a、临时任务

    b、生产环境:bug不方便重现;用log方法,tail、tailf查看日志文件

    2)IDE debug

    a、常用于开发过程中

    b、更加方便、快捷

    c、可以查看变量、表达式的值

  • 相关阅读:
    【Node.js】Jade视图模板的使用
    【Node.js】新建一个NodeJS 4.X项目
    【Node.Js】npm国内被墙的解决方法
    【AngularJS学习笔记】Java Script "use strict" 严格模式
    【Linux学习笔记】Linux-CentOS下安装Redis
    【Linux学习笔记】常用命令速记
    【AngularJS学习笔记】封装一些简单的控件(封装成Html标签)
    数组和切片1
    Go错误处理机制及自定义错误
    内置函数
  • 原文地址:https://www.cnblogs.com/nick1998/p/10128867.html
Copyright © 2020-2023  润新知