ubuntu使用pdb调试python代码笔记

在pdb模式下基本都是单个字母完成调试中的命令,命令列表网上很多。

  1. 起步,调试模式打开py文件(-m的意思是将库中的python模块用作脚本去运行)。

    python -m pdb test.py

  2. 用l(l就是list的意思)看看文件里面有什么(很常用的命令)。
    它不会显示全部文件,只会显示当前运行行的上下几行代码,其中->指向的就是当前的运行的哪一行(注释和空行是直接跳过的),因为是刚开始,所以是第一个import(19是代码在文件中的行数)。

    (Pdb) l

    19 -> import sys

  3. 用n(next)命令来执行到下一行,可以一直用n来一步一步看。

  4. 用s进入一个函数,比如运行的箭头指向的代码是调用某一个函数(这个函数可以在任何其他文件中),s命令就会跳转到那个函数定义的地方,就像pycharm中的ctrl+鼠标左键命令一样,如果当前行不是函数的话,s的作用和n是一样的。

  5. 用r退出一个函数,就是运行完这个函数,然后return。

  6. 命令b(break)打断点,如下是在pdb的命令行,选择在根目录下的test.py文件的第100行打断点。
    如果是只使用当前一个py文件,则用b 12在12行打断点。

    (Pdb) b /test.py:440

  7. 命令c就是一直运行到遇到断点或者结束。

  8. 显示一个变量的值( 假设我在代码中定义了dict_1):

    (Pdb)p dict_1

  9. 退出:q 或者exit。

注意,如果在循环的位置(比如for的哪一行)加断点,则执行到这之后,如果用一次c命令,它会循环一次后停到开始的位置,有多少次循环就会停多少次。

  1. 遇到报错:ConfigurationError: unable to access signing_dir /var/cache/neutron
    用sudo运行Python的pdb

  2. 遇到报错:
    RuntimeError: Could not bind to 0.0.0.0:9696 after trying for 30 seconds
    说明端口9696被占用,可以查看:lsof -i:9696,重启neutron可以
    关闭命令:systemctl stop [email protected]

  3. Python pdb启动调试neutron服务。
    python -m pdb /usr/local/bin/neutron-server --config-file /etc/neutron/neutron.conf --config-file /etc/neutron/plugins/ml2/ml2_conf.ini

如果报错:

Traceback (most recent call last): File
“/usr/lib/python2.7/runpy.py”, line 163, in _run_module_as_main
mod_name, _Error) File “/usr/lib/python2.7/runpy.py”, line 102, in _get_module_details
loader = get_loader(mod_name) File “/usr/lib/python2.7/pkgutil.py”, line 462, in get_loader
return find_loader(fullname) File “/usr/lib/python2.7/pkgutil.py”, line 473, in find_loader
loader = importer.find_module(fullname) File “/usr/lib/python2.7/pkgutil.py”, line 181, in find_module
path = [os.path.realpath(self.path)] File “/usr/lib/python2.7/posixpath.py”, line 383, in realpath
return abspath(path) File “/usr/lib/python2.7/posixpath.py”, line 371, in abspath
cwd = os.getcwd() OSError: [Errno 2] No such file or directory

可能换一个新的命令行窗口就好了。

你可能感兴趣的:(python,Linux)