我想在.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
中编写的内容;此外,在pdb提示符下键入end
后,它会引发NameError
,因为存在foo.attr1
、foo.attr2
甚至end
。对于其余断点也会发生同样的情况,因此我最终设置了它们,但没有设置它们的命令。
正确的方法是什么?这可能吗?
3条答案
按热度按时间u91tlkcl1#
您可能不希望每次在任何地方使用pdb时都设置此别名。
然后,您可以在适当的时候运行
setup_myproj
。jfewjypa2#
我的第一个想法是命令必须在一行中定义:
但是,这似乎只在提示符下起作用,您将错误地得到:
如果将上面的行放在.pdbrc中
查看pdb.py,作者似乎没有正确处理pdbrc中的定义命令。
我个人只会暂时将打印行放在我正在调试的代码中,同时使用pdbrc保存感兴趣的断点来解决这个问题。
wnrlj8wa3#
十多年后,不幸的是,当从
.pdbrc
文件阅读commands
时,pdb
仍然不能正确处理end
命令。同时,* 对于简单的控制流 *,可以通过 * 不 * 使用
commands
命令来解决此问题。例如,您可以执行以下操作:显然,这只适用于简单的情况,即您知道下一个将到达哪个断点。