pdb和winpdb似乎都缺少这个必要的(对我来说)功能.我看到WingIDE有这样的东西,但我更喜欢免费的解决方案,如果我必须支付,我宁愿支付比Wing更好的东西.
一般来说,您对此有何建议?目前,我需要将近10分钟的时间来附加到托管SharePoint 2007的本地运行的IIS进程.
我已经开始在emacs 23.3中通过gud使用pdb,如何从缓冲区挂钩发送到调试器的命令消息?我写了下面的建议与gdb一起使用,以便持久化comint的响铃,但找不到与pdb挂钩的等效函数.我使用python-mode.el作为我的主要模式.
谢谢.
(defadvice gdb-send-item (before gdb-save-history first nil activate)
"write input ring on quit"
(if (equal (type-of item) 'string) ; avoid problems with 'unprintable' structures sent to this function..
(if (string-match "^q\\(u\\|ui\\|uit\\)?$" item)
(progn (comint-write-input-ring)
(message "history file '%s' written" comint-input-ring-file-name)))))
Run Code Online (Sandbox Code Playgroud) 想象一下以下场景:从IPython shell启动脚本,并在断点处调用python调试器.使用PDB命令,可以在此时分析代码和变量.但事实证明,变量的值需要进行更深入的研究.
是否可以将变量的值导出到IPython shell?
我的具体用例:我遇到了一个非常庞大的numpy数组,似乎没有正确的值.我知道我可以从python调试器运行任何python命令,但将变量的值保存在不同的断点并在IPython shell中使用所有这些命令会很有帮助.我想像这样的东西
ipdb> global var1; var1 = var
ipdb> continue
...
ipdb> global var2; var2 = var
ipdb> continue
...
In [2]: abs(var1 - var2) # do some interesting calculations with IPython
Run Code Online (Sandbox Code Playgroud) 我正在使用CMake命令安装PDB文件,以便在我的C++应用程序的开发人员分发中启用调试.命令如下:
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/Debug
DESTINATION bin
FILES_MATCHING
PATTERN *.pdb
)
Run Code Online (Sandbox Code Playgroud)
此外,我已经设法在同一级别的'src'文件夹中安装用于构建开发人员分发的相关源,以便我的顶级分发文件夹看起来像:
include\
src\
lib\
bin\
share\
doc\
3rdparty\
etc\
Run Code Online (Sandbox Code Playgroud)
如何让PDB文件"知道"源的位置(我假设这是必需的)?是否有可以实现此目的的CMake命令?什么是一个小例子?
我正在调试一个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) 我想运行cd,并ls在Python调试器。我尝试使用!ls但我得到
*** NameError: 名称 'ls' 未定义
我想在仍然使用纱线的同时单步执行 python-spark 代码。我目前的做法是启动 pyspark shell,复制粘贴,然后逐行执行代码。我想知道是否有更好的方法。
pdb.set_trace()如果它有效,将是一个更有效的选择。我用spark-submit --master yarn --deploy-mode client. 程序确实停止了,并在pdb.set_trace()被调用的那一行给了我一个 shell 。但是,在 shell 中输入的任何 pdb 命令都会挂起。的pdb.set_trace()插入,正如我理解,应在本地运行的驱动器和附接有终端执行火花函数调用之间。我读了这篇文章如何在调试模式下调用 pyspark?这似乎表明不依赖 IDE(PyCharm)就不可能使用 pdb。但是,如果可以交互式运行 spark 代码,那么应该有一种方法可以让 python-spark“一直运行到这一行,并给我一个用于 REPL 的 shell(交互式使用)。我还没有找到任何方法来做到这一点. 任何建议/参考表示赞赏。
我显然不明白这里的一些东西。我正在尝试pdb在 Docker 容器中以交互方式运行调试器。
这是一些代码:
Dockerfile:
FROM python:3.6
ENV PROJECT_DIR=/opt/foo
WORKDIR $PROJECT_DIR
COPY . .
RUN pip install -r requirements.txt
CMD ["python", "foo.py"]
Run Code Online (Sandbox Code Playgroud)
foo.py:
def hello_world():
print("hello world")
if __name__ == '__main__':
#import pdb; pdb.set_trace()
hello_world()
Run Code Online (Sandbox Code Playgroud)
如果我运行docker build -t foo .然后docker run foo,它会按预期打印出“hello world”。
但是如果我取消对pdb.set_trace()上面的调用的注释并重试,我会收到以下错误:
/opt/foo/foo.py(8)<module>()
-> hello_world()
(Pdb)
Traceback (most recent call last):
File "foo.py", line 8, in <module>
hello_world()
File "foo.py", line 8, in <module>
hello_world()
File "/usr/local/lib/python3.6/bdb.py", line 51, in …Run Code Online (Sandbox Code Playgroud)