在Java/C#中,您可以轻松地逐步执行代码以跟踪可能出错的内容,而IDE使此过程非常用户友好.
你能以类似的方式追踪python代码吗?
当我尝试在uWSGI下使用python pdb调试器时,执行不会在断点上停止,它只返回trackback.
这是代码:
def application(env, start_response):
import pdb; pdb.set_trace()
start_response('200 OK', [('Content-Type','text/html')])
return "Hello World"
Run Code Online (Sandbox Code Playgroud)
这是我运行它的方式:
uwsgi --http 127.0.0.1:7777 --wsgi-file uwsgi_test.py
Run Code Online (Sandbox Code Playgroud)
这就是我得到的:
/home/andrey/Development/ttt/uwsgi_test.py(3)application()
-> start_response('200 OK', [('Content-Type','text/html')])
(Pdb)
Traceback (most recent call last):
File "uwsgi_test.py", line 3, in application
start_response('200 OK', [('Content-Type','text/html')])
File "uwsgi_test.py", line 3, in application
start_response('200 OK', [('Content-Type','text/html')])
File "/usr/lib/python2.7/bdb.py", line 48, in trace_dispatch
return self.dispatch_line(frame)
File "/usr/lib/python2.7/bdb.py", line 67, in dispatch_line
if self.quitting: raise BdbQuit
bdb.BdbQuit
[pid: 11421|app: 0|req: 1/1] 127.0.0.1 () {32 vars in 366 …Run Code Online (Sandbox Code Playgroud) 我不确定我问的是否可能,但是因为python可能是一个解释器.我正在尝试在开源项目中进行更改,但因为python中没有类型,所以很难知道变量作为数据和它们的作用.您不能只查找var类型的文档,因为您无法确定它是什么类型.我想放到终端,这样我就可以通过输入help(var)或print(var)来快速检查变量的类型和它们的作用.我可以通过更改代码然后每次重新运行程序来执行此操作,但这会慢得多.
假设我有一个程序:
def foo():
a = 5
my_debug_shell()
print a
foo()
Run Code Online (Sandbox Code Playgroud)
my_debug_shell是我要问的函数.它会让我进入python解释器的'>>> shell,在那里我可以输入help(a),它会告诉我a是一个整数.然后我输入'a = 7'和一些'continue'命令,程序继续打印7而不是5,因为我改变了它.
我使用Notepad ++编写和运行Python脚本.除了调试之外,它是一个很棒的文本编辑器.有没有办法在Visual Studio中逐步执行代码,使用断点,在Notepad ++中查看变量值等?
我正在调试一个sys.path看起来像的python脚本
sys.path = ['','home/my_library', ..]
Run Code Online (Sandbox Code Playgroud)
我my_library在使用pdb时在模块中设置断点时遇到麻烦.该脚本使用以下命令导入库:
import my_library as foo
Run Code Online (Sandbox Code Playgroud)
反过来,my_library通过以下方式使其模块可用:
from my_module import bar
Run Code Online (Sandbox Code Playgroud)
如何在我的脚本上运行pdb时解决my_module的代码?
PS:我尝试了以下但没有成功:
b my_module:1
b my_library.my_module:1
b my_library.bar:1
b foo.my_module:1
b foo.bar:1
Run Code Online (Sandbox Code Playgroud)