如何加快程序調(diào)試的速度

孤立問題

利用test_learn孤立出問題. 典型場景是一大段程序執(zhí)行當中發(fā)現(xiàn)正則表達式匹配出錯,此時最好是大原先的字符串復(fù)制出來,然后放在test_learn中,用不同的正則表達式調(diào)試,調(diào)試成功了就可以用了.

循環(huán)內(nèi)的問題

典型場景是循環(huán)了1000次,然后里面地745次執(zhí)行會出問題. 如果此時設(shè)置斷點的話,需要運行很久才才能發(fā)現(xiàn)問題. 可以采用加入判斷語句的技巧來定位問題.參考下面的代碼:

for i in range(1000):
    do_something(i) # i=745會報錯
for i in range(1000):
    if i == 745:
       print(1) # 斷點設(shè)置在這里
    do_something(i) 

網(wǎng)絡(luò)環(huán)境中出現(xiàn)的問題

典型場景:網(wǎng)絡(luò)環(huán)境中出現(xiàn)中斷等問題,導(dǎo)致爬蟲程序卡斷,報錯.print的記錄不夠詳細.對這個情況應(yīng)該記錄最好要記錄詳細的日志,然后根據(jù)日志來查詢問題. 記錄日志采用.frm數(shù)據(jù)格式.其中把內(nèi)容都保存下來,出現(xiàn)問題后打開查看其中的問題在哪里. 參考下面的案例:

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}) # 這里有返回結(jié)果記錄
# 另外寫讀取日志文件的函數(shù)
def read_log():
    log_frm = pd.read_pickle(log_file_path)
   problem_request_list = []
    for i in log_frm.index:
      # 這里可以改寫為自己需要其他檢查規(guī)則
       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 )

網(wǎng)絡(luò)方面會發(fā)現(xiàn)很多預(yù)料之外的問題,因此原則上要建立詳盡的日志系統(tǒng).方便以后排查問題.

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,311評論 2 89
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,616評論 19 139
  • ORA-00001: 違反唯一約束條件 (.) 錯誤說明:當在唯一索引所對應(yīng)的列上鍵入重復(fù)值時,會觸發(fā)此異常。 O...
    我想起個好名字閱讀 5,983評論 0 9
  • 清晨的薄霧還籠罩著破舊的山村,沿著斜斜的小路一直爬上去,遠處就是老宋的屋子。幾聲雞叫過后,老宋從屋里打開門,聽見...
    吟游詩人htyz閱讀 221評論 0 0
  • 遇見一個人,唱過一首情歌,寫過一封情書,然后就沒有然后了,一切都似乎是順其自然,但是冥冥之中又覺得過于順風順水,直...
    一笑師妹閱讀 273評論 0 0

友情鏈接更多精彩內(nèi)容