Django的调试方法
web程序调试起来和桌面程序有着很大的差别,对于Django程序来说调试更是个问题。我们可以用postman发送http请求,下面就介绍几种调试方法:
1、在Eclipse+Pydev中调试Django
适用于测试环境。
可进行单步调试,查看变量值,当出现except时,可以用Python标准模块traceback的print_exc()函数查看函数调用链,是最强大的调试利器。
可参考http://my.oschina.net/chihz/blog/180573#OSC_h2_3
2、使用Django的error page
适用于测试环境。
Django的error page功能很强大,能提供详细的traceback,包括局部变量的值,以及一个纯文本的异常信息。拥有同phpinfo()一样的作用,
可以展示当前应用的相关设置,包括请求中的 GET, POST and COOKIE 数据以及HTTP环境中的所有重要META fields。
可以通过
assert False
assert False, request.GET
来触发Django的错误页面,进而进行调试工作
3、django-debug-toolbar
不确定是否用于生产环境。听说功能非常强大,我没用过。
4、输出log到开发服务器终端中
适用于生产环境。
借助python的logging模块
在setting.py中添加如下配置
import logging
logging.basicConfig(
level = logging.DEBUG,
format ='%(asctime)s %(levelname)s %(message)s',
)
在需要输出log信息的地方可以这样调用
import logging
logging.debug("A log message")
这样一来就能在开发服务器的终端中看到想要输出的log,如果想将log信息记录到指定文件中去,调整logging的basicConfig即可,如下所示:
logging.basicConfig(
level = logging.DEBUG,
format ='%(asctime)s %(levelname)s %(message)s',
filename ='/tmp/myapp.log',
filemode ='w'
)
有时我们发现我们的程序大部分情况下运行正常,只在特定环境中出现错误,此时可以使用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)
logging模块是线程安全的,但不能用于多进程。在多进程的环境下,需要做成B/S结构的,可参考http://www.blogjava.net/qileilove/archive/2014/01/08/408669.html
Django的调试方法的更多相关文章
- PyCharm Django项目开发的调试方法
下面介绍两种PyCharm Django项目开发的调试方法: 方法一: 1. 使用PyCharm 自带的django项目Debug工具, 当然前提条件是django项目环境已经搭建好了. 2. 在代码 ...
- Linux环境下段错误的产生原因及调试方法小结(转)
最近在Linux环境下做C语言项目,由于是在一个原有项目基础之上进行二次开发,而且 项目工程庞大复杂,出现了不少问题,其中遇到最多.花费时间最长的问题就是著名的“段错误”(Segmentation F ...
- linux Ubuntu(Segmentation fault)段错误出现原因及调试方法
在linux下编译了一个程序,尝试运行的时候出现: Segmentation fault (core dumped) 初步确认为...完全不知道是什么玩意. 于是找度娘了. ----------- ...
- kernel启动console_init之前console不可用时发生crash的调试方法
http://code.google.com/p/innosoc/wiki/KernelBootCrashDebug 注: 如在i386_start_kernel中加入:early_printk(&q ...
- Linux环境下段错误的产生原因及调试方法小结
转载自http://www.cnblogs.com/panfeng412/archive/2011/11/06/2237857.html 最近在Linux环境下做C语言项目,由于是在一个原有项目基础之 ...
- 【matlab】MATLAB程序调试方法和过程
3.8 MATLAB程序的调试和优化 在MATLAB的程序调试过程中,不仅要求程序能够满足设计者的设计需求,而且还要求程序调试能够优化程序的性能,这样使得程序调试有时比程序设计更为复杂.MATLAB ...
- 二十四、【开源】EFW框架Winform前端开发之项目结构说明和调试方法
回<[开源]EFW框架系列文章索引> EFW框架源代码下载V1.2:http://pan.baidu.com/s/1hcnuA EFW框架实例源代码下载:http://pan ...
- Linux的段错误调试方法
linux段错误的调试方法 相关博文: http://blog.csdn.net/htianlong/article/details/7439030 http://www.cnblogs.com/pa ...
- Linux - Shell脚本调试方法
Shell脚本调试选项 Shell本身提供一些调试方法选项: -n,读一遍脚本中的命令但不执行,用于检查脚本中的语法错误. -v,一边执行脚本,一边将执行过的脚本命令打印到标准输出. -x,提供跟踪执 ...
随机推荐
- NFS exportfs 命令
exportfs 是在服务端上使用的命令,主要用来操作挂载的目录,比如我们修改了NFS配置文件,需要重启NFS服务,如果客户端正在读写,那么重启NFS服务对客户端是有影响的,因此 exportfs 命 ...
- SVN 快速入门
一.SVN 简介 (1) SVN 是 Subversion 的缩写,是一个开源的版本控制系统(2) SVN 基于 C/S 架构,有一台中央服务器,多台客户端通过网络从中央服务器拉取或提交代码,以此达到 ...
- html主要笔记
1.用title属性作为工具提示 2.链接到锚点 <a href="http://wickedlysmart.com/buzz#Coffee"> 3.<em> ...
- 转:ANDROID音频系统散记之四:4.0音频系统HAL初探
昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1 ...
- VC利用调试寄存器实现硬件断点源码
[文章标题]:VC利用调试寄存器实现硬件断点源码 [文章作者]:yhswwr(SilenceRet) [作者QQ]:3412259 [编写语言]:C++ [使用工具]:VS2008.VC++9 [本文 ...
- 【python3】爬取新浪的栏目分类
目标地址: http://www.sina.com.cn/ 查看源代码,分析: 1 整个分类 在 div main-nav 里边包含 2 分组情况:1,4一组 . 2,3一组 . 5 一组 .6一组 ...
- springboot---->集成mybatis开发(二)
这里面我们介绍一下springboot集成mybatis完成一对多数据和一对一数据的功能.任何一个人离开你 都并非突然做的决定 人心是慢慢变冷 树叶是渐渐变黄 故事是缓缓写到结局 而爱是因为失望太多 ...
- shell 数值计算
shell中的赋值和操作默认都是字符串处理,在此记下shell中进行数学运算的几个特殊方法,以后用到的时候可以来看,呵呵. 1.错误方法举例 a) var=1+1 echo $var ...
- Android 控制闪光灯
首先闪光灯可以用android.hardware.camera来控制. 1.添加权限 <uses-permission android:name="android.permission ...
- CSS学习之盒子模型
1. 前言 盒子模型,英文即box model.无论是div.span.还是a都是盒子. 但是,图片.表单元素一律看作是文本,它们并不是盒子.这个很好理解,比如说,一张图片里并不能放东西,它自己就是自 ...