我对python和pdb比较新,但我对gdb有很多经验.
我的问题是,如果我在某些时候在我的代码中设置了一些断点,我会想要改变一些东西并重新运行我的调试会话,保留这些断点.但是,在我的pdb会话中输入"run"会导致我的会话以以下输出终止
(Pdb) run
Traceback (most recent call last):
File "/usr/lib64/python2.6/runpy.py", line 122, in _run_module_as_main
"__main__", fname, loader, pkg_name)
File "/usr/lib64/python2.6/runpy.py", line 34, in _run_code
exec code in run_globals
File "/usr/lib64/python2.6/pdb.py", line 1319, in <module>
pdb.main()
File "/usr/lib64/python2.6/pdb.py", line 1312, in main
pdb.interaction(None, t)
File "/usr/lib64/python2.6/pdb.py", line 198, in interaction
self.cmdloop()
File "/usr/lib64/python2.6/cmd.py", line 142, in cmdloop
stop = self.onecmd(line)
File "/usr/lib64/python2.6/pdb.py", line 267, in onecmd
return cmd.Cmd.onecmd(self, line)
File "/usr/lib64/python2.6/cmd.py", line 219, in onecmd
return func(arg)
File "/usr/lib64/python2.6/pdb.py", line 661, in do_run
raise Restart
pdb.Restart
]$
Run Code Online (Sandbox Code Playgroud)
我在两个独立的Linux平台上尝试了这个并且得到了相同的结果,但我在文档中找不到任何更正.
dmo*_*mon 10
因此,如果有人关心问题是pdb中的"run"与gdb中的"run"不完全相同.在gdb中,如果我输入run,程序将重新启动并继续到第一个断点.在pdb中,程序重新启动并转到文件的开头.然后我必须按'n'然后按'c'才能进入第一个断点.如果,试图让程序运行,我在调试器崩溃的文件开头第二次键入运行,如上所示.
小智 6
这是我的文件test.py:
import pdb
pdb.set_trace()
print('1 line')
Run Code Online (Sandbox Code Playgroud)
当我使用命令“python3 test.py”时,我得到同样的错误:
> /home/wangpq/program_note/test.py(3)<module>()
-> print('1 line')
(Pdb) run
Traceback (most recent call last):
File "program_note/test.py", line 3, in <module>
print('1 line')
File "program_note/test.py", line 3, in <module>
print('1 line')
File "/usr/lib/python3.5/bdb.py", line 48, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python3.5/bdb.py", line 66, in dispatch_line
self.user_line(frame)
File "/usr/lib/python3.5/pdb.py", line 259, in user_line
self.interaction(frame, None)
File "/usr/lib/python3.5/pdb.py", line 346, in interaction
self._cmdloop()
File "/usr/lib/python3.5/pdb.py", line 319, in _cmdloop
self.cmdloop()
File "/usr/lib/python3.5/cmd.py", line 138, in cmdloop
stop = self.onecmd(line)
File "/usr/lib/python3.5/pdb.py", line 412, in onecmd
return cmd.Cmd.onecmd(self, line)
File "/usr/lib/python3.5/cmd.py", line 217, in onecmd
return func(arg)
File "/usr/lib/python3.5/pdb.py", line 1022, in do_run
raise Restart
pdb.Restart
Run Code Online (Sandbox Code Playgroud)
然后我使用命令“python3 -m pdb test.py”
wangpq@wangpq:~$ python3 -m pdb program_note/test.py
> /home/wangpq/program_note/test.py(1)<module>()
-> import pdb
(Pdb) restart
Restarting program_note/test.py with arguments:
program_note/test.py
> /home/wangpq/program_note/test.py(1)<module>()
-> import pdb
(Pdb)
Run Code Online (Sandbox Code Playgroud)
有用。到目前为止,我还不确定为什么会发生这种情况。
| 归档时间: |
|
| 查看次数: |
2224 次 |
| 最近记录: |