gpt4 book ai didi

python - 如何将现有缓冲区附加到 realgud 调试器?

转载 作者:行者123 更新时间:2023-12-04 20:08:51 32 4
gpt4 key购买 nike

我开始使用 realgud在 GNU Emacs 24.3.1 中作为 GUD 的替代品。 (主要是因为当我用 vanilla pdb 设置断点时,它不尊重它。)

我正在使用 pdb bin/start_openerp 启动 OpenERP Web 服务器它打开主脚本。但是我需要能够在我正在处理的缓冲区中放置断点。

我需要如何将我的缓冲区附加到调试器。

有关我的环境的更多详细信息

对于 OpenERP 开发,我正在使用 buildoutanybox recipe .这将创建 bin/start_openerp重写 sys.path 的脚本以匹配我的构建环境。

我正在开发几个 OpenERP 的自定义插件。所以当我需要进入调试器 session 来解决问题时,我正在编辑一些。我执行以下操作:

  • 编辑我的缓冲区并保存它们。
  • 运行 pdb bin/start_openerp .这将打开脚本 ShortKeys次要模式激活。

  • 如果我执行 break file:lineno在 realgud 缓冲区上运行的命令和中断受到尊重。但是我需要转到其中一个缓冲区并在某行中设置点,在那里设置断点。

    最佳答案

    这里有一个必须克服的概念问题。

    但首先,我需要定义几个术语。 “命令缓冲区”是您看到的地方 (Pdb)它具有与之关联的 Python 进程和调试器。 “源代码缓冲区”是一个包含 Python 源代码的 Emacs 缓冲区。

    当您调试多个 Python session 时,有多个命令缓冲区。有可能多个命令缓冲区在它们停止运行 Python 程序的过程中的某个时刻引用相同的 Python 源代码。那么从 Python 源代码的缓冲区中,如何区分您希望断点发生在几个 Python session 中的哪一个?

    当您在其中一个 session 中停止时,命令缓冲区知道您在哪里。它安排拉起源代码缓冲区并将其自身与该源代码缓冲区相关联。源代码缓冲区存储与其关联的 Python 命令缓冲区。在理想情况下,它将存储所有相关的命令缓冲区并将边缘标记与正确的调试器进程相关联,但现在它只能存储一个指向命令缓冲区的指针。

    源代码缓冲区也可能进入“快捷键模式”。在这里,在任何行上键入“b”将在与该源代码缓冲区关联的 Python 进程中的该行设置断点。

    但是假设有几个 session 并且您在源代码缓冲区中并且不知道哪个命令缓冲区与它相关联?当从源缓冲区内部运行时,Emacs 命令和函数 realgud:srcbuf-info-describe 将显示有关源代码缓冲区的信息,包括与其关联的命令缓冲区。

    因此,设置与正确 Python 进程关联的源代码缓冲区的一种简单方法是从正确的命令缓冲区设置断点,然后清除断点。源代码缓冲区将处于短键模式,然后您可以在任何行上键入“b”,这将转到正确的 Python session 。

    Emacs realgud 函数 realgud-srcbuf-init-or-update 可用于使用命令缓冲区初始化任何 Python 缓冲区,但请注意,这不是交互式命令。您需要有命令缓冲区对象和源代码缓冲区

    最后让我插入一个类似 pdb 和更像 gdb 的调试器 trepan2适用于 Python2 和 trepan3k对于 Python3。

    emacs-dbgr/common/buffer/source.el有关源缓冲区的更多信息。

    关于python - 如何将现有缓冲区附加到 realgud 调试器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21443801/

    32 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com