我想在.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
中写的内容;此外,由于NameError
,end
甚至foo.attr1
,我在pdb提示符下输入foo.attr2
后会引发end
。对于其余的断点也会发生同样的情况,因此我最终会设置它们而不是它们的命令。
这样做的正确方法是什么?它甚至可能吗?
答案 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来保存感兴趣的断点来解决这个问题。