标签: pdb

处理python pdb flakiness re/stdout的最佳方法?

如果我有一个stdout重定向的程序,我的pdb会提示所有进入重定向,因为写入库是为了写入stdout.

通常这个问题很微妙,导致我认为程序正在等待输入时挂起.

人们如何解决这个问题?(不幸的是,使用其他调试器如winpdb不是一个选项).

python pdb

5
推荐指数
2
解决办法
1505
查看次数

跳过收益声明

在Python调试器(pdb)中时,我想跳过yield语句,但接下来按下(n)会将我带到yield 的目的地,即生成器的使用者。我想转到在生成器中执行的下一行。有什么办法吗?

我正在使用Python 2.6

python generator pdb

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

使用FIFO运行不带stdin/stdout的pdb

我正在用python开发FUSE文件系统.问题是,安装文件系统后,我从我的保险丝脚本标准输入/输出/标准错误的访问权限.我没有看到任何东西,甚至是追溯.我试图像这样启动pdb:


import pdb
pdb.Pdb(None, open('pdb.in', 'r'), open('pdb.out', 'w')).set_trace()

一切正常,但非常不方便.我想将pdb.in和pdb.out作为fifo文件,但不知道如何正确连接它.理想情况下,我想在一个终端中键入命令并查看输出,但即使有两个终端也会很高兴(一个放置命令,另一个看输出).问题:

1)没有stdin/stdout运行pdb更好/其他方式吗?

2)如何将stdin重定向到pdb.in fifo(我输入的所有内容必须转到pdb.in)?我怎样才能将pdb.out重定向到stdout(我有"cat pdb.out"的奇怪错误,但也许我不明白的东西)

python bash pdb

5
推荐指数
2
解决办法
1827
查看次数

在bin目录中存在.pdb文件会对性能产生负面影响吗?

如果我将.pdb文件保存在bin目录中,这是一个问题吗?是否有任何负面的性能问题?

.net asp.net pdb

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

研究mspdbsrv的RPC调用

mspdbsrv.exe是Microsoft内部用于更新PDB文件的实用程序.编译器通过RPC向mspdbsrv发送符号更新,mspdbsrv依次更新PDB文件.

我试图了解这些更新的样子.不幸的是,微软没有发布IDL所以我不知道RPC函数原型,但是看看这些更新,因为原始数据足够有趣.

这就是我的想法:

在这种情况下,mspdbsrv.exe默认端点是\RPC Control\mspdb_10.00.30319.01_rtl_32_00000000000733A0.但是mspdbsrv有一个命令行参数-endpoint,可以将其端点设置为不同的端点.但是,编译器可能始终连接到默认端点.
我想我可以创建一种"代理服务器"来监听mspdbsrv默认端点,运行带有不同端点的mspdbsrv.exe,并在记录时透明地将RPC传递给mspdbsrv.由于代理公开mspdbsrv端点,编译器将不知道它已连接到代理.

这有意义吗?如何在没有IDL的情况下编写这样的代理RPC服务器?
如果有人知道有关这些PDB更新的一些细节,也许有一条捷径?

更新

我发现了00000000000733A0mspdbsrv端口名称的后缀是什么......(mspdb_10.00.30319.01_rtl_32_00000000000733A0).
这是当前用户的安全访问令牌!以下是如何获取它的片段:

HANDLE hToken;    
if (OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY, &hToken) != 0)
{

    TOKEN_STATISTICS tsStats;
    DWORD dwOutSize;

    if (GetTokenInformation(hToken, TokenStatistics, &tsStats, sizeof(tsStats), &dwOutSize))
    {
        printf(TEXT("%08x%08x\n"), (UINT)tsStats.AuthenticationId.HighPart, (UINT)tsStats.AuthenticationId.LowPart);
    }
}
Run Code Online (Sandbox Code Playgroud)

rpc visual-studio-2010 visual-c++ pdb-files pdb

5
推荐指数
0
解决办法
538
查看次数

Visual Studio 2013尝试加载iisexpress.pdb

我刚从VS 2012升级到VS 2013.解决方案从原来的位置打开了.但是,当我运行它时,我得到以下内容:

http://www.magicsoftsolutions.com/ScreenShot.png

如果我在工具栏上点击继续,它会这样做,似乎没有任何麻烦地运行应用程序.我已经尝试清空符号缓存并重新加载,以及不加载任何符号.我也尝试使用"本地IIS"而不是"IIS express",但这需要管理员权限,即便如此我似乎无法让它实际工作(VS只是挂起,甚至从未打开过IE).

因为当我继续经历这个错误时,事情似乎工作正常,我真的只想知道为什么会发生这种情况以及如何阻止它.我猜测它正试图实际加载"iisexpress.exe"的调试符号,当然我没有.它在VS 2012中从未这样做过,所以我不确定它为什么会在VS 2013中这样做.

谢谢,

安德鲁

debugging iis-express pdb visual-studio-2013

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

以编程方式插入pdb命令

我希望能够以编程方式保存或插入pdb命令,这是一个例子:

(Pdb) b doc/filename.py:365   
Breakpoint 1 at doc/filename.py:365

(Pdb) commands  # command to be applied to all breaks
(com) silent  # makes it not print the break message
(com) print "Here is my breakpoint!"
(com) c  # continues without stopping on break
Run Code Online (Sandbox Code Playgroud)

所以我在这里创建一个命令,将在我的断点处发生,我将打印文本"这是我的断点!" 然后继续

现在我的问题是,每次我想要那些打印(或者我想要添加的任何类型的命令)时,我必须手动编写所有这些内容.我希望有一种更自动化的方式来添加这些命令,可能将它们保存在某种.pdbrc文件中,或者能够使用pdb.set_trace()命令作为代码添加它们,这样我就可以将其粘贴.

python debugging pdb

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

如何使用pdb或ipdb调试Tornado应用程序?

我用旋风ioloop开发应用,当它涉及到http_client.fetchcallback,我要开始PDB import pdb; pdb.set_trace(),但将引发一个例外:

> /home/yiwei.liyw/dsa-engine/src/collect/engine_task.py(52)task_created()
-> print response.body
(Pdb)
2015-10-26 15:30:38,629 ERROR ioloop.py:612 Exception in callback <functools.partial object at 0x7fe0d98e5e68>
Traceback (most recent call last):
  File "/home/yiwei.liyw/dsa-engine/venv/lib/python2.7/site-packages/tornado/ioloop.py", line 592, in _run_callback
    ret = callback()
  File "/home/yiwei.liyw/dsa-engine/venv/lib/python2.7/site-packages/tornado/stack_context.py", line 275, in null_wrapper
    return fn(*args, **kwargs)
  File "/home/yiwei.liyw/dsa-engine/src/collect/engine_task.py", line 52, in task_created
    print response.body
  File "/home/yiwei.liyw/dsa-engine/src/collect/engine_task.py", line 52, in task_created
    print response.body
  File "/home/tops/lib/python2.7/bdb.py", line 49, in trace_dispatch
    return self.dispatch_line(frame)
  File "/home/tops/lib/python2.7/bdb.py", line 68, in dispatch_line
    if …
Run Code Online (Sandbox Code Playgroud)

python tornado python-2.7 pdb ipdb

5
推荐指数
0
解决办法
600
查看次数

如何在警告时自动切换到调试模式?

我想调试一个在代码执行过程中发生的警告.

一个简单的断点不会这样做,因为在第一次警告发生之前,导致警告的行会在没有警告的情况下执行数百万次.

此外,发生这种情况的行是在库代码中(更准确地说,在中pandas/core/common.py),所以我的首选是根本不修改代码.

我只想在发出警告时立即停止程序的执行,并在此时检查堆栈,或者使用pdb或使用ipdb.

有没有办法配置调试器在发出警告时自动进入单步模式?

python ipython pdb ipdb

5
推荐指数
2
解决办法
1108
查看次数

点安装会导致错误。我可以通过pdb调试吗?

Ubuntu 16.04
Python 3.5.2
Run Code Online (Sandbox Code Playgroud)

如果我运行python,则在virtualenv内部,将得到Python 3.5.2。

问题是:

(photoarchive) admin@simple_project:~/venv/photoarchive/lib/python3.5/encodings$ pip install django-crequest
Collecting django-crequest
  Using cached django-crequest-2016.3.16.tar.gz
    Complete output from command python setup.py egg_info:
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-2qlcw5ux/django-crequest/setup.py", line 9, in <module>
        license=open('LICENSE').read(),
      File "/home/admin/venv/photoarchive/lib/python3.5/encodings/ascii.py", line 26, in decode
        return codecs.ascii_decode(input, self.errors)[0]
    UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 204: ordinal not in range(128)

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-2qlcw5ux/django-crequest/
Run Code Online (Sandbox Code Playgroud)

好吧,点安装会破坏一切。顺便说一下,在没有virtualenv的情况下,该软件包是通过pip安装的。

我被困住了,不知道该如何应对。

我唯一想到的就是在ascii.py中的第26行停止。这似乎可以通过pdb实现。我将对其进行编辑,然后在其中添加pdb.set_trace()。然后保存文件。 …

pdb

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