python程序中的调试:pdb
python中,也有像c/c++语言的 gdb 一样的调试程序,即pdb;
只简单说明一个怎么使用它。
假设已经有了一个python程序名为 test.py, 我们在命令行输入以下内容,即可以进行 python的调试阶段了:
python -m pdb test.py // 不加m 不行; //例如:
yinheyi@ubuntu:~/grub$ python -m pdb test.py
> /home/yinheyi/grub/test.py()<module>()
-> def fun():
(Pdb)
(至于为什么加 –m 参数或它表示什么意思呢? 查了一下,与 sys.path 有关,加入到 sys.path 列表里的变量不一样,反正不管了;)
进入以后,我们可以通过 输入 h 得到帮助, 输入 h ,会显示常用的命令,如下所示:
(Pdb) h Documented commands (type help <topic>):
========================================
EOF bt cont enable jump pp run unt
a c continue exit l q s until
alias cl d h list quit step up
args clear debug help n r tbreak w
b commands disable ignore next restart u whatis
break condition down j p return unalias where Miscellaneous help topics:
==========================
exec pdb Undocumented commands:
======================
retval rv
此时,比如我们输入: help b, 就会显示 b 命令的用法了;
下面列出常用的命令:
s 单步执行(会进行函数)
n 执行下一行, 不会进行函数;
c 继续执行,直到遇到断点;
r return, 执行代码直到当前函数返回;
p 打印变量值,如: p a, 打印变量a 的值;
l 查看当前要执行的代码段;默认列出11行(将执行的行的上下各5行);当带一个参数时,会列出给定行的上下各5行; 如果给定两个参数并用逗号分开,分列出所给定范围内的行;
b 设置断点, 可以是行号,也可以是函数名;
cl 用于清除断点;如果不加任何参数,则清除所以断点, 如果加上用空格分开的断点的编号,则清除它们,如: cl 2 ,清除断点2和断点4;
disable 使某个断点失效; 后面跟用空格分开的 一系列断点号,如: disable ;
enable 使某些断点发挥作用; 用法与 disable类似;
exit 退出;
python程序中的调试:pdb的更多相关文章
- 在Python程序中的进程操作,multiprocess.Process模块
在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...
- python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)
昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...
- python程序中使用MySQL数据库
目录 python程序中使用MySQL数据库 1 pymysql连接数据库 2 sql 注入 3 增删改查操作 4 pymysql使用总结 python程序中使用MySQL数据库 1.python中使 ...
- Python程序中的进程操作--—--开启多进程
Python程序中的进程操作-----开启多进程 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创 ...
- Python程序中的线程操作(线程池)-concurrent模块
目录 Python程序中的线程操作(线程池)-concurrent模块 一.Python标准模块--concurrent.futures 二.介绍 三.基本方法 四.ProcessPoolExecut ...
- Python程序高效地调试
现在我在debug python程序就只是简单在有可能错误的地方print出来看一下,不知道python有没像c++的一些IDE一样有单步调试这类的工具?或者说各位python大神一般是怎么debug ...
- MFC程序中使用调试宏ASSERT()、ASSERT_VALID()、VERIFY()和TRACE()的区别
其实这篇文章说的很明白了:http://dev.gameres.com/Program/Other/DebugMacro.htm 结论如下: 1.ASSERT()测试它的参数,若参数为0,则中断执行并 ...
- 在非MFC程序中使用调试宏 ASSERT(),VERIFY()和 TRACE()
游戏制作已经开始采用C++了,却鲜有人选择使用MFC.但笔者觉得的 ASSERT(),VERIFY()和 TRACE()这几个宏很好用.所以就想自己写一个版本来适应Windows平台下不同的工程类型. ...
- python 程序中调用go
虽然python优点很多,但是有一个致命的缺点就是运行速度太慢,那么python程序需要一些计算量比较大的模块时一般会调用c或者c++的代码来重写,但是c/c++编写代码代价太高,耗费太多的人力.那么 ...
随机推荐
- [Windows Azure] Enabling Diagnostics in Windows Azure
Enabling Diagnostics in Windows Azure Windows Azure Diagnostics enables you to collect diagnostic da ...
- 【Android】Android消息处理机制
三大核心类 android的消息处理有三个核心类:Looper,Handler和Message. 其实还有一个Message Queue(消息队列),但是MQ被封装到Looper里面了 Looper ...
- vue2 如何操作dom
在vue中可以通过给标签加ref属性,就可以在js中利用ref去引用它,从而操作该dom元素,以下是个例子,可以当做参考 <template> <div> <div id ...
- js实现手机摇一摇
//手机摇一摇 ---------------------------------------------------------- init();var SHAKE_THRESHOLD = 3000 ...
- maven 使用记录之修改 maven默认jdk版本
maven package执行的时候会遇到jdk版本不对的问题 :原因是 maven所指定的jdk版本与项目使用的jdk版本不一致 1.项目属性的 java compiler可以设置 2.直接修改 m ...
- tf.reduce_mean
tf.reduce_mean reduce_mean( input_tensor, axis=None, keep_dims=False, name=None, reduction_indices=N ...
- C#使用线程池创建线程
using System; using System.Threading; public class Example { public static void Main() { // Queue th ...
- Python对字典(directory)按key和value排序
distance = {9149: 0, 9150: 26, 9151: 24, 9152: 24, 9153: 24, 9154: 27, 9155: 25, 9156: 30, 9158: 20, ...
- mongo源码学习(二)db.cpp之mongoDbMain方法分析
mongo后台进程的入口:mongo/src/mongo/db/dbmain.cpp,wmain(for windows)和main函数,main函数也很简单,就是委托给db.cpp中的mongoDb ...
- Java 调用cmd.exe命令
原理:java的Runtime.getRuntime().exec(commandText)可以调用执行cmd指令. cmd /c dir 是执行完dir命令后关闭命令窗口. cmd /k dir 是 ...