使用Eclipse调试web2py

6 投票
1 回答
1099 浏览
提问于 2025-04-17 13:10

我正在使用Eclipse(配合PyDev)来开发一个web2py应用程序。我按照这个指南设置了一切。现在,我想在Eclipse中调试我的应用程序。但是,不知道为什么,当执行到断点时,程序并不总是停止。

我创建了两个独立的web2py应用(在两个Eclipse项目中)。调试在一个项目上似乎正常,但在另一个项目上却不行。这两个项目都引用了同一个web2py安装。因此,无论我在Eclipse中选择哪个项目进行“运行.../调试...”,web2py都会通过浏览器提供这两个应用。

我创建了一个简单的测试文件(controllers/test.py),内容如下:

def index():
    print 'I should break.'
    print 'After the breakpoint'
    return dict(test=1)

我在第一个print语句处设置了一个断点。

我把这个文件放在了两个项目中(我们称它们为A和B)。

我有以下观察:

当我从Eclipse启动调试时,调试器在项目A的test.py文件中的断点处会停止执行,但似乎忽略了项目B的test.py文件中的断点。无论我是从项目A还是项目B启动web2py,行为都是一样的。项目A中的断点有效,而项目B中的断点被忽略。

我比较了所有项目的属性和运行配置属性,找不到任何区别(除了项目名称和路径)。

两个项目的执行都非常正常。例如,上面测试文件中的print语句的输出总是显示在Eclipse控制台中。

有没有人知道这是怎么回事?是什么原因让项目A能正常工作,而项目B却不行?

我使用的是Python 2.7.1。

当我设置

DEBUG_TRACE_LEVEL = 3 
DEBUG_TRACE_BREAKPOINTS = 3 

在eclipse/plugins/org.python.pydev.debug/pysrc/pydevd_constants.py中(根据评论的要求),我得到了以下控制台输出:

pydev调试器:启动中 ('执行文件 ', 'C:\misc\web2py_src\web2py\web2py.py') ('参数:', "['C:\\misc\\web2py_src\\web2py\\web2py.py']") ('连接到 ', '127.0.0.1', ':', '49565') ('已连接。',) ('收到命令 ', '501\t1\t1.1') 发送命令: CMD_VERSION 501 1 1.1

sending cmd: CMD_THREAD_CREATE 103  2   <xml><thread name="pydevd.reader" id="-1"/></xml>

sending cmd: CMD_THREAD_CREATE 103  4   <xml><thread name="pydevd.writer" id="-1"/></xml>

('received command ', '111\t3\tC:\\misc\\workspace\\Newtoon\\controllers\\test.py\t12\t**FUNC**index\tNone')
Added breakpoint:c:\misc\workspace\newtoon\controllers\test.py - line:12 - func_name:index
('received command ', '111\t5\tC:\\misc\\workspace\\Newtoon\\controllers\\importer.py\t11\t**FUNC**index\tNone')
Added breakpoint:c:\misc\workspace\newtoon\controllers\importer.py - line:11 - func_name:index
('received command ', '111\t7\tC:\\misc\\web2py_src\\web2py\\applications\\GeorgsTestApp\\controllers\\unique_names.py\t6\t**FUNC**index\tNone')
Added breakpoint:c:\misc\web2py_src\web2py\applications\georgstestapp\controllers\unique_names.py - line:6 - func_name:index
('received command ', '111\t9\tC:\\misc\\web2py_src\\web2py\\applications\\GeorgsTestApp\\controllers\\test.py\t12\t**FUNC**index\tNone')
Added breakpoint:c:\misc\web2py_src\web2py\applications\georgstestapp\controllers\test.py - line:12 - func_name:index
('received command ', '122\t11\t;;')
Exceptions to hook : []
('received command ', '124\t13\t')
('received command ', '101\t15\t')
No handlers could be found for logger "web2py"
web2py Web Framework
Created by Massimo Di Pierro, Copyright 2007-2011
Version 1.99.4 (2011-12-14 14:46:14) stable
Database drivers available: SQLite3, pymysql
Starting hardcron...
WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking
sending cmd: CMD_THREAD_CREATE 103  6   <xml><thread name="MainThread" id="pid5740_seq4" /></xml>

sending cmd: CMD_THREAD_CREATE 103  8   <xml><thread name="Thread-4" id="pid5740_seq5" /></xml>

please visit:
    http://127.0.0.1:8000
starting browser...
sending cmd: CMD_THREAD_CREATE 103  10  <xml><thread name="Dummy-7" id="pid5740_seq6" /></xml>

sending cmd: CMD_THREAD_CREATE 103  12  <xml><thread name="Dummy-6" id="pid5740_seq7" /></xml>

sending cmd: CMD_THREAD_CREATE 103  14  <xml><thread name="Thread-13" id="pid5740_seq8" /></xml>

sending cmd: CMD_THREAD_CREATE 103  16  <xml><thread name="Thread-10" id="pid5740_seq9" /></xml>

sending cmd: CMD_THREAD_CREATE 103  18  <xml><thread name="Thread-11" id="pid5740_seq10" /></xml>

sending cmd: CMD_THREAD_CREATE 103  20  <xml><thread name="Port8000" id="pid5740_seq11" /></xml>

sending cmd: CMD_THREAD_CREATE 103  22  <xml><thread name="Thread-12" id="pid5740_seq12" /></xml>

sending cmd: CMD_THREAD_CREATE 103  24  <xml><thread name="Thread-8" id="pid5740_seq13" /></xml>

sending cmd: CMD_THREAD_CREATE 103  26  <xml><thread name="Thread-9" id="pid5740_seq14" /></xml>

sending cmd: CMD_THREAD_CREATE 103  28  <xml><thread name="Thread-16" id="pid5740_seq15" /></xml>

sending cmd: CMD_THREAD_CREATE 103  30  <xml><thread name="Thread-15" id="pid5740_seq16" /></xml>

sending cmd: CMD_THREAD_CREATE 103  32  <xml><thread name="Thread-18" id="pid5740_seq17" /></xml>

sending cmd: CMD_THREAD_CREATE 103  34  <xml><thread name="Thread-14" id="pid5740_seq18" /></xml>

sending cmd: CMD_THREAD_CREATE 103  36  <xml><thread name="Thread-17" id="pid5740_seq19" /></xml>

WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking
I should break.
After the breakpoint
sending cmd: CMD_THREAD_SUSPEND 105 38  <xml><thread id="pid5740_seq12" stop_reason="111"><frame id="97199496" name="index" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Capplications%255Cgeorgstestapp%255Ccontrollers%255Ctest.py" line="12">"</frame><frame id="95957960" name="%26lt%3Blambda%26gt%3B" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cglobals.py" line="172">"</frame><frame id="100912680" name="%26lt%3Bmodule%26gt%3B" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Capplications%255Cgeorgstestapp%255Ccontrollers%255Ctest.py" line="19">"</frame><frame id="66219576" name="restricted" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crestricted.py" line="204">"</frame><frame id="96138760" name="run_controller_in" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Ccompileapp.py" line="537">"</frame><frame id="96513256" name="serve_controller" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="202">"</frame><frame id="62835496" name="wsgibase" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="493">"</frame><frame id="62834872" name="app_with_logging" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Cmain.py" line="676">"</frame><frame id="96071288" name="run_app" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crocket.py" line="1994">"</frame><frame id="66212296" name="run" file="c%253A%255Cmisc%255Cweb2py_src%255Cweb2py%255Cgluon%255Crocket.py" line="1302">"</frame><frame id="95948632" name="__bootstrap_inner" file="c%253A%255Cpython27%255Clib%255Cthreading.py" line="530">"</frame><frame id="96053672" name="__bootstrap" file="c%253A%255Cpython27%255Clib%255Cthreading.py" line="503">"</frame></thread></xml>

WARNING:web2py.cron:WEB2PY CRON: Disabled because no file locking
('received command ', '106\t17\tpid5740_seq12')
('processing internal command ', '<pydevd_comm.InternalRunThread instance at 0x0000000005F82E88>')
I should break.
After the breakpoint
sending cmd: CMD_THREAD_RUN 106 40  pid5740_seq12   None

行为没有改变。应用B中的断点被忽略,而应用A中的断点有效。

1 个回答

2

我遇到了一个类似的问题,就是我无法让断点正常工作(pydev的断点不工作)。

目前还没有解决办法,不过也许知道我没有使用web2py会有帮助。

撰写回答