|
web程序調(diào)試起來和桌面程序有著很大的差別,對于Django程序來說調(diào)試更是個問題,雖然現(xiàn)在有第三方的調(diào)試工具robhudson-django-debug-toolbar,但使用起來并不是很方便,而且很多人習(xí)慣于通過print來調(diào)試,這樣方便快捷。下面就介紹兩種簡單的調(diào)試方法: 1.充分利用Django的error page Django的error page功能很強大,能提供詳細的traceback,包括局部變量的值,以及一個純文本的異常信息。擁有同 phpinfo() 一樣的作用,可以展示當前應(yīng)用的相關(guān)設(shè)置,包括請求中的 GET, POST and COOKIE 數(shù)據(jù)以及HTTP環(huán)境中的所有重要META fields。
可以通過 assert False assert False, request.GET 來觸發(fā)Django的錯誤頁面,進而進行調(diào)試工作 2.輸出log到開發(fā)服務(wù)器終端中 借助python的logging模塊 在setting.py中添加如下配置 import logging logging.basicConfig( level = logging.DEBUG, format = '%(asctime)s %(levelname)s %(message)s', ) 在需要輸出log信息的地方可以這樣調(diào)用 import logging logging.debug("A log message") 這樣一來就能在開發(fā)服務(wù)器的終端中看到想要輸出的log,如果想將log信息記錄到指定文件中去,調(diào)整logging的basicConfig即可,如下所示: logging.basicConfig(
level = logging.DEBUG,
format = '%(asctime)s %(levelname)s %(message)s',
filename = '/tmp/myapp.log',
filemode = 'w'
)
有時我們發(fā)現(xiàn)我們的程序大部分情況下運行正常,只在特定環(huán)境中出現(xiàn)錯誤,此時可以使用 traceback module
記錄當前棧存信息
import logging, traceback, pprint def my_buggy_function(arg): ... if error_condition: stack = pprint.pformat(traceback.extract_stack()) logging.debug('An error occurred: %s' % stack) |
|
|