.pdbrc文件中断点的命令

时间:2010-01-06 14:51:52

标签: python debugging

我想在.pdbrc中保存断点的命令,例如:

b 81 
commands 1 
pp foo.attr1 
pp foo.attr2 
end 
b 108 
commands 2 
pp bar.attr1 
pp bar.attr2 
end 

这将自动设置调试会话的环境。但是,这不适用于python -m pdb script.py,因为在行commands 1处,pdb提示符启动并询问我第一个断点的命令,忽略我在.pdbrc中写的内容;此外,由于NameErrorend甚至foo.attr1,我在pdb提示符下输入foo.attr2后会引发end。对于其余的断点也会发生同样的情况,因此我最终会设置它们而不是它们的命令。

这样做的正确方法是什么?它甚至可能吗?

2 个答案:

答案 0 :(得分:1)

每次在任何地方使用pdb时,您可能都不希望这样设置。我的建议是设置一个别名,例如:

alias setup_myproj b 81;; commands 1;; pp foo.attr1;; pp foo.attr2;; end

然后您可以在适当的时候运行setup_myproj

答案 1 :(得分:0)

我的第一个想法是必须在一行上定义命令:

commands 1;; pp foo.attr1;; pp foo.attr2;; end;;

然而,看起来这只会在提示符处起作用,并且您将错误地获取:

Usage : commands [bnum]
        ...
        end

如果您将上面的行放在.pdbrc

看一下pdb.py,似乎作者没有正确处理pdbrc中的定义命令。我个人会暂时将打印行放在我正在调试的代码中,同时使用pdbrc来保存感兴趣的断点来解决这个问题。