web程式除錯起來和桌面程式有著很大的差別,對於django程式來說除錯更是個問題,雖然現在有第三方的除錯工具robhudson-django-debug-*******,但使用起來並不是很方便,而且很多人習慣於通過print來除錯,這樣方便快捷。下面就介紹兩種簡單的除錯方法:
1.充分利用django的error page
django的error page功能很強大,能提供詳細的traceback,包括區域性變數的值,以及乙個純文字的異常資訊。擁有同phpinfo()一樣的作用,可以展示當前應用的相關設定,包括請求中的 get, post and cookie 資料以及http環境中的所有重要meta fields。
可以通過
false
assert
false, request.get
來觸發django的錯誤頁面,進而進行除錯工作
2.輸出log到開發伺服器終端中
借助python的logging模組
在setting.py中新增如下配置
importlogging
logging.basicconfig(
level
=logging.debug,
format ='
%(asctime)s %(levelname)s %(message)s',
) 在需要輸出log資訊的地方可以這樣呼叫
importlogging
logging.debug(
"a log message")
這樣一來就能在開發伺服器的終端中看到想要輸出的log,如果想將log資訊記錄到指定檔案中去,調整logging的basicconfig即可,如下所示:
logging.basicconfig(level
=logging.debug,
format ='
%(asctime)s %(levelname)s %(message)s',
filename ='
',filemode ='
w')
有時我們發現我們的程式大部分情況下執行正常,只在特定環境中出現錯誤,此時可以使用traceback module 記錄當前棧存資訊,方便除錯。具體呼叫方法如下所示:
import
logging, traceback, pprint
defmy_buggy_function(arg):
...if
error_condition:
stack
=pprint.pformat(traceback.extract_stack())
logging.debug(
'an error occurred: %s'%
stack)
PL SQL經驗兩則
兩則pl sql程式設計的小經驗,隨手記下。一 對游標引數使用like查詢 定義乙個游標 cursor cemploye cpname varchar2 is select emp no from employe where name cpname 如果要使用like查詢怎麼辦?簡單 cursor ...
awk處理兩則
發覺很多時候在論壇上碰到下述兩種問題。現在歸類以下 1.在乙個檔案當中以一定的規則刪除重複的記錄 有如下銀行帳單部分文字,200000000000007 shi yan city qi pei bu 202111320000018 hospital 200000000000007 shiyan ci...
DirectFB兩則技巧
directfb 兩則技巧 directfb 的執行行為可以通過配置檔案進行控制,可以從多個配置檔案中讀出配置資訊,然後合併到一起,甚至可以對不同名稱的應用程式指定不同的配置檔案。其主配置檔案為 etc direcfbrc 它的內容影響所有使用者的應用程式。建立 pc模擬環境。directfb 和x...