基本调试

静态代码分析

Python作为一门动态语言,解释器只会在运行之前检查代码的基本语法,不能进行更加详细的错误分析。例如,"引用未定义的变量", "传递了错误的参数"。这些错误只能在运行的时候被抛出。 静态代码分析 就是用来解决这样问题的技术,它试图在程序未运行之前对代码分析来检查一些可能的错误,避免在运行之后才发现,提升开发效率。

安装Pylint

pip install pylint

使用Pylint

默认条件下,Pylint会同时分析错误信息和编码风格问题,这里就不讨论编码风格了,使用-E选项来只找出错误。

pylint -E fifoqueue.py

结果:

************* Module fifoqueue_error
E:  5,20: Undefined variable ‘threading‘ (undefined-variable)
E: 18,18: Undefined variable ‘queue‘ (undefined-variable)
E: 15,19: Access to member ‘queue‘ before its definition line 19 (access-member-before-definition)

准确的找出了,上段代码的问题:

  1. 没有导入threading模块
  2. 第18行中,dequeue函数里面引用了未定义的queue变量,实际上是应该使用self.queue
  3. self.queue变量未在构造函数__init__内初始化。

但是pdb最好能掌握,因为在任何环境下,这个调试器都是可以用的,通过python -m pdb foo.py你就能快速进入调试界面。

安装pudb

pip install pudb

进入调试界面

pudb fifoqueue_error.py

进入pudb之后,pudb暂停在程序的第一行代码处。"图形界面"有五个区域: 代码区、命令行区、变量区、栈区、断点区。

出错界面

按下c字符(Continue),pudb会继续运行程序。在这里,由于代码错误,会抛出错误:

可以显示运行时异常的代码位置、本地变量值、栈。你可以在Command line中输入一些调试命令看到更多的你想要

来源: http://monklof.com/post/20/

pdb调试:

pdb.set_trace()

b 加入断点

cl 清除断点

加入到需要加断点的代码处,运行时,执行在此处即可中断,单步、继续、查看变量值等功能都有,不妨help下

运行当前程序:Ctrl+Shift+F10

在settings里面搜索可以找到相应设置

在Console Font 和python当中设置关键字颜色

Ctrl+/  和 三个点都是注释

在pycharm安装库的时候可以自己选择从哪里下载

shift+F9断点调试

引用模块包

生成变量

查看某个值

step over执行下一行

stop into 进入当前对象里面的方法,最后返回当前方法出来执行下面的

更上面差不多

跳到下一个断点

和watch一样

pycharm调django很慢

使用 pdb 进行调试

pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。

表 1. pdb 常用命令
命令 解释
break 或 b 设置断点 设置断点
continue 或 c 继续执行程序
list 或 l 查看当前行的代码段
step 或 s 进入函数
return 或 r 执行代码直到从当前函数返回
exit 或 q 中止并退出
next 或 n 执行下一行
pp 打印变量的值
help 帮助

来源: http://www.ibm.com/developerworks/cn/linux/l-cn-pythondebugger/

b 是设置断点

c 执行程序,忽略断点

l 查看代码

n 执行下一行

pp 打印相应变量值

q 终止退出

Pycharm 支持表达式求值,可以通过选中该表达式,然后选择“Run”->”Evaluate Expression”,在出现的窗口中直接选择 Evaluate 便可以查看。

设置断点的方法非常简单

如果要动态的监测某个变量可以直接选中该变量并选择菜单”Run”->”Add Watch”添加到 watches 栏中。当调试进行到该变量所在的语句时,在该窗口中可以直接看到该变量的具体值。

多线程调试:对于多线程程序来说,通常会有多个线程,

来自为知笔记(Wiz)

时间: 2024-10-13 14:53:49

基本调试的相关文章

Linux下GDB调试与对拍(先挖个坑)

应为NOIP要复赛在NOI-Linux下编写程序,所以被迫选择Vim+Gdb(主要是Guide太丑了). 虽然GUIDE的调试功能已经对付大多数的调试,反正学一学GDB的使用也没什么坏处. 1 生成调试信息 要调试C/C++的程序,首先在编译时,我们必须要把调试信息加到可执行文件中.使用编译器(cc/gcc/g++)的 -g 参数可以做到这一点.如: gcc -g hello.c -o hello g++ -g hello.cpp -o hello 如果没有-g,你将看不见程序的函数名.变量名,

微信开发之本地接口调试(非80端口,无需上传服务器服务器访问

前言: 本文是总结在开发微信接口时,为方便开发所采取的一些快捷步骤,已节省开发人员难度开发时间从而提高开发效率. 本地测试: (提醒,在本地模拟微信get或post数据时先将校验参数注释掉) 利用微信模拟器weixinPost进行模拟发送xml数据 由于这个软件是微信没公开高级接口时公布的,所以对于高级接口的调试,笔者利用的是Fiddler这个抓包工具模拟post数据 高端测试: 利用反向代理软件ngrok访问本地项目: ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之

PHPStorm调试PHP代码~实际操作+mark~~

因为wamp自己已经下载了xdebug,只要配置开启就行了. 1. 配置php.ini(有就打开注释,没有就加上) XDEBUG Extension[xdebug]zend_extension ="D:/wamp64/bin/php/php5.6.25/zend_ext/php_xdebug-2.4.1-5.6-vc11-x86_64.dll"xdebug.remote_enable = 1;远程主机xdebug.remote_host = localhost;主机端口xdebug.r

Tomcat配置远程调试端口(windows、Linux)

当我们需要定位生产环境问题,而日志又不清晰的情况下,我们可以借助Tomcat提供的远程调试,设置如下: // Linxu系统: apach/bin/startup.sh开始处中增加如下内容: declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8081" // Windows系统:

Android APP 调试过程中遇到的问题。

调试过过程中APP安装完启动后有的时候会异常退出,报这个错误.有的时候可以直接启动.查找不到原因.网上说把commit方法替换成commitAllowingStateLoss() 也无效. Android APP 调试过程中遇到的问题. >> android 这个答案描述的挺清楚的:http://www.goodpm.net/postreply/android/1010000007192169/AndroidAPP调试过程中遇到的问题.html

Linux-hexdump命令调试event驱动—详解(13)

hexdump: 查看文件的内容,比如二进制文件中包含的某些字符串,通常用来调试驱动用 1.调试 键盘驱动 讲解 当我们insmod挂载了键盘驱动后,找到键盘驱动被放在event1设备里, 此时没有按键按下,所以event1里面的数据是没有的,那么数据又是从来哪里来? 通过键盘驱动的read函数,若有按键按下,就会上传按键数据给用户层,此时的用户层就是hexdump 因为键盘驱动的input_handler 是:evdev_handler 所以键盘驱动的read函数是: evdev_handle

调试信息的完成

gdb中-x是为了实现通过文件的初始化gdb GAS(gcc)(AT&T 语法),NASM(Intel 语法) 当boot loader 引导操作系统的时候,机器必须有如下的状态: EAX: 必须包含魔数OX2BADB002,这个值告诉操作系统目前它是由兼容的Multiboot 的boot loader 引导的. EBX: 必须包含boot loader 提供的多重引导信息结构(见3.3 节多重信息引导结构)的32位物理地址. CS: 必须是32 位的读/执行的代码段,偏移是0 以及界限是 0X

gdb调试

[前言]使用gdb调试前,在编译程序时,要加 -g 选项,否则你将看不见程序的函数名.变量名,所代替的全是运行时的内存地址. 1.开始调试 a.  gdb <program> program也就是你的执行文件,一般在当前目录下. b. gdb <program> core 用gdb同时调试一个运行程序和core文件,core是程序非法执行后core dump后产生的文件. 2.[列出源码],从第n行开始(编译时要加 -g 选项) l n 3.[设置断点]在第N行加断点 break

WebPack+WebStorm调试

怎么用webstorm来调试WebPack? 今天查了很多文档,最终在官网上耐心看完英文文档后,才解决.附上链接:https://blog.jetbrains.com/webstorm/2015/09/debugging-webpack-applications-in-webstorm/ 工具简介 Windows7 WebStorm2017 Webpack2 谷歌浏览器(默认浏览器) 操作 在Project视图里找到index.html,右击进入Debug模式 WebStrom会自动进入Debu

VS2013 VS2015 VS2017调试出现无法启动iis express web服务器

最近老是遇到这个问题,天天如此,烦死人,网上答案繁多,但是都解决不了,也是由于各种环境不同导致的,这里把几种解决方法都记录下 一.其他项目都可以,就这么一个不行 因为其他项目都可以,就这么一个不行,所以基本就是配置问题,网上的办法都试了,我试了都没用,现在说说我的解决办法 用记事本或者其他什么文本编辑器,打开项目的.csproj文件,定位到<WebProjectProperties>,把关于IIS的配置<DevelopmentServerPort>.<DevelopmentS