标签: pdb

如何在不同的 pdb(pp) 会话之间保存状态?

我用来pdbpp调试程序。我想知道是否可以在不同会话之间保存和恢复pdbpp(或pdb)状态。

我的意思是,我想在调试器进程的独立调用之间保留所有断点、别名、显示列表等。

我知道状态是在单个调试器进程中保留的。但是如果我退出调试器并再次启动它会怎么样?可以恢复状态吗?

python pdb

6
推荐指数
1
解决办法
787
查看次数

代码更改后,如何在不重新启动pdb的情况下重新开始调试?

在pdb中调试时,我发现错误,因此更改了代码。

现在我想重新开始调试。我可以在不退出 pdb 的情况下执行此操作,这样我就不必为 python 脚本指定命令行参数吗?或者我需要退出pdb然后再次进入?

python python-2.7 pdb

6
推荐指数
1
解决办法
1782
查看次数

在 Python 中以编程方式执行用户输入的 pdb 或 ipdb 命令

我正在使用 PyQt 应用程序,因此在开始调试之前,在 Python 文件中,我有pyqtRemoveInputHook()停止事件循环的行,然后ipdb.set_trace(). 这将通过终端进入交互式调试会话。完成调试后,我需要手动在终端中键入c; pyqtRestoreInputHook()以继续运行程序并恢复事件循环。告诉或继续,并且c被解释为 Python 代码。虽然这不是太麻烦,但我想以某种方式创建一个函数,允许 python 命令告诉或者给定的字符串是伪键盘命令。ipdbpdbpyqtRestoreInputHook()ipdbpdb

换句话说,我试图找到一个基本上ipdb.run_user_input(my_string)可以my_string是任何正常函数ipdbpdb函数(如nextcsteplist等)的函数。

谢谢!

python-3.x pdb ipdb

6
推荐指数
1
解决办法
890
查看次数

JupyterLab 中的 pdb 未进入交互模式

pdb我的目标是使用 JupyterLab或在 JupyterLab 中运行一些 python 脚本ipdb来捕获我的调试历史记录。

set_trace()我首先在我的 python 脚本中插入:

import torch
from IPython.core.debugger import set_trace

def train_batch(model_instance, inputs_source, labels_source, inputs_target, optimizer, args):
    inputs = torch.cat((inputs_source, inputs_target), dim=0)
    total_loss, train_stats = model_instance.get_loss(inputs, labels_source)
    total_loss[args.train_loss].backward()

    set_trace() # insert breakpoint

    optimizer.step()
    return train_stats
Run Code Online (Sandbox Code Playgroud)

然后我在 JupyterLab 中运行此脚本:

!python ./trainer/train.py \
    --base_config ./config/sgd_vannila_0.001.yml \
    --dataset Office-Home \
    --class_num 50 \
    --src_address ./data/office-home/Art.txt \
    --tgt_address ./data/office-home/Clipart.txt \
    --name transfer.debug.rand_noise \
    --train_steps 10000 \
    --seed 2 \
    --filter_classes=0,50 \
    --eval_interval 50
Run Code Online (Sandbox Code Playgroud)

执行在断点处停止,但不提供交互框来提示任何ipdb …

python pdb jupyter jupyter-notebook

6
推荐指数
2
解决办法
2011
查看次数

在 PyCharm 调试中恢复多线程应用程序

考虑以下情况:

  • 我们有一个多线程应用程序
  • 我们在一个线程的断点处暂停
  • 我们在另一行代码中设置断点
  • 新线程命中该断点
  • 所以我们有 2 个线程同时暂停
  • 我们想要恢复第二个线程,但第一个线程仍然暂停
  • 如果我们选择该线程并单击恢复 -> 两个线程都会恢复

有没有办法只恢复 1 个线程?演示

debugging multithreading pycharm pdb

6
推荐指数
0
解决办法
143
查看次数

防止 Visual Studio 在编译的 exe 中泄漏 pdb 路径

当我在 Visual Studio 中将 C# 项目构建为发行版时,生成的 .exe 包含以下字符串:

\n
C:\\Users\\jornane\\source\\repos\\\xc2\xabsolution\xc2\xbb\\\xc2\xabproject\xc2\xbb\\obj\\Release\\\xc2\xabname\xc2\xbb.pdb\n
Run Code Online (Sandbox Code Playgroud)\n

.exe 文件泄露了我的用户名和存储项目的路径。有什么办法可以防止这种情况发生吗?我理解为什么该路径适用于调试版本,但不适用于发布版本。

\n

.net msbuild assemblies visual-studio pdb

6
推荐指数
1
解决办法
1014
查看次数

Google Colab PDB 调试器隐藏键入的命令

我使用 google colab 并尝试使用 pdb.set_trace() 设置断点,但是当我键入命令时,字符被隐藏。当我键入如下图所示的命令时,“*********”之类的内容会出现在“>pdb”命令后面。我尝试在单元格中使用 stty sane 和重置命令,但它不起作用。有谁知道如何解决这个问题?

在此输入图像描述

debugging ipython pdb jupyter-notebook google-colaboratory

6
推荐指数
0
解决办法
264
查看次数

尝试通过 FormattedTB 使用 pdb 时出现 NoneType 错误

当执行以下代码时:

from IPython.core import ultratb
sys.excepthook = ultratb.FormattedTB(mode='Verbose', color_scheme='Linux', call_pdb=1)
Run Code Online (Sandbox Code Playgroud)

为了捕获异常,我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 994, in __init__
    VerboseTB.__init__(self, color_scheme=color_scheme, call_pdb=call_pdb,
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 638, in __init__
    TBTools.__init__(
  File "/Users/dinari/miniconda3/envs/testenv/lib/python3.8/site-packages/IPython/core/ultratb.py", line 242, in __init__
    self.pdb = debugger_cls()
TypeError: 'NoneType' object is not callable
Run Code Online (Sandbox Code Playgroud)

使用 python 3.8.2 和 IPython 8.4.0

pdb 否则工作正常。

有解决这个问题的想法吗?

python ipython pdb

6
推荐指数
1
解决办法
90
查看次数

我可以让pdb立即开始调试吗?

我想调试一个python项目

问题是,我不知道在哪里设置一个断点,

我想做的是,能够调用一个方法

SomeClass( some_ctor_arguments ).some_method()` 
Run Code Online (Sandbox Code Playgroud)

并立即调试调试器

我怎么做?

我试过pdb.run( string_command )但它似乎没有正常工作

>>> import pdb
>>> import <some-package>
>>> pdb.run( .... )
> <string>(1)<module>()
(Pdb) s
NameError: "name '<some-package>' is not defined"
Run Code Online (Sandbox Code Playgroud)

python debugging pdb

5
推荐指数
1
解决办法
1231
查看次数

如何清除Python pdb屏幕?

让我们说我写

(Pdb) p dir(object)
Run Code Online (Sandbox Code Playgroud)

而且,现在我的屏幕上有一个属性列表.如何在仍处于调试模式时清除此文本?重要的是,我不想失去我在代码中的位置.

python pdb

5
推荐指数
1
解决办法
1809
查看次数