美文网首页
如何加快程序调试的速度

如何加快程序调试的速度

作者: 唯此 | 来源:发表于2018-08-11 11:49 被阅读0次

孤立问题

利用test_learn孤立出问题. 典型场景是一大段程序执行当中发现正则表达式匹配出错,此时最好是大原先的字符串复制出来,然后放在test_learn中,用不同的正则表达式调试,调试成功了就可以用了.

循环内的问题

典型场景是循环了1000次,然后里面地745次执行会出问题. 如果此时设置断点的话,需要运行很久才才能发现问题. 可以采用加入判断语句的技巧来定位问题.参考下面的代码:

for i in range(1000):
    do_something(i) # i=745会报错
for i in range(1000):
    if i == 745:
       print(1) # 断点设置在这里
    do_something(i) 

网络环境中出现的问题

典型场景:网络环境中出现中断等问题,导致爬虫程序卡断,报错.print的记录不够详细.对这个情况应该记录最好要记录详细的日志,然后根据日志来查询问题. 记录日志采用.frm数据格式.其中把内容都保存下来,出现问题后打开查看其中的问题在哪里. 参考下面的案例:

for url_i in url_list:
    res = requests.get(headers=headers, url=url_i, timeout = 5) # 时不时会出问题
for url_i in url_list:
   begin_time = time.time()
   request_id += 1
    save_log(datetime.now(), {'headers': headers, 'url': url_i, 'reqeust_id ':reqeust_id }) #出问题这里会有日志记录.
    requests.get(headers=headers, url=url_i, timeout = 5) 
    save_log(datetime.now(), {'request_id ':request_id , 'time_cost': time.time()-begin_time, 'res': res}) # 这里有返回结果记录
# 另外写读取日志文件的函数
def read_log():
    log_frm = pd.read_pickle(log_file_path)
   problem_request_list = []
    for i in log_frm.index:
      # 这里可以改写为自己需要其他检查规则
       if time_cost in log_frm.loc[i,'detail'].keys() and log_frm.loc[i,'detail']['time_cost '] > 100
          problem_request_list.append( log_frm.loc[i,'detail']['request_id'])
    io_state.write(problem_request_list )

网络方面会发现很多预料之外的问题,因此原则上要建立详尽的日志系统.方便以后排查问题.

相关文章

  • 如何加快程序调试的速度

    孤立问题 利用test_learn孤立出问题. 典型场景是一大段程序执行当中发现正则表达式匹配出错,此时最好是大原...

  • InjectionIII 快速调试

    介绍: Injection 可以动态地将 Swift 或 OC 的代码在已运行的程序中执行,以便加快调试速度,提升...

  • iOS 利用bugly调试程序并收集bug信息+NSLog调试

    前言:---------- >学会如何调试程序bug<---------- 1.在开发中如何调试程序 ...

  • 如何加快阅读速度?

    (应朋友要求写的一个小东西) 昨天在朋友圈发了加快了阅读速度这条之后,有朋友问我方法,一时间也想不起来怎么去写,就...

  • 如何加快编译速度

    如何查看编译时间 终端内输入: 然后你在编译的时候点击xcode顶部的那个进度条,当编译完成的时候就能查看编译时间...

  • 如何加快阅读速度

    现在的社会,节奏十分的快,大家都在努力提高效率,读书也不例外,一分钟能读的字数越多,你就有可能比别人进步越快...

  • 如何加快SPA的速度

    单页面应用程序(SPA)可能要花很长时间才能发射。这是一个巨大的问题,因为即使延迟一秒钟也会使您花费7%的转化。 ...

  • 框架整理系列四(加快调试速度)

    model.gralde中加入

  • Android(49)组件化开发

    组件化的优势 加快编译速度:每个业务组件都可单独运行调试,速度提升很多。提高协作效率:每个组件都有专人维护,不用关...

  • 速度~速度速度速度加快~

    昨天早中晚每个时段都收到来自神带来的同一条讯息 一大早 神的使者简单直白的说出了重点(指葛先生) 加速!加速!加速...

网友评论

      本文标题:如何加快程序调试的速度

      本文链接:https://www.haomeiwen.com/subject/qatdbftx.html