python - "fakesource"在 python pdb 调试 session 中指什么?

标签 python pdb

我正在尝试深入了解 Bokeh 应用程序的内部结构,了解 AjaxDataSource 在幕后如何工作,从而获得一些灵感,通过必要基类的自定义扩展来概括我的应用程序的远程源。

我能够在函数的早期阶段进入大量的 pdb,但在深入研究 circle 函数时,我遇到了调试器落在 fakesource 上的限制,如下所示。下面是 python 源代码...

def modify_doc1(doc):

    # get model data from Flask
    url    = "http://localhost:8080/sendModelData/"
    pdb.set_trace()
    source = AjaxDataSource( data             = dict( x=[] , y=[] ) ,
                             data_url         = url       ,
                             polling_interval = 5000      ,
                             mode             = 'replace' ,
                             method           = 'GET'     )
    # plot the model data
    plot = figure( )
    plot.circle( 'x' , 'y' , source=source , size=2 )
    doc.add_root(column(plot))


> C:\MyBokehApp\flask_embedjsonroute.py(43)modify_doc1()
-> plot.circle( 'x' , 'y' , source=source , size=2 )
(Pdb) s
--Call--
> C:\MyBokehApp\fakesource(2)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(3)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(4)circle()
(Pdb) n
> C:\MyBokehApp\fakesource(5)circle()
(Pdb) n
--Return--

我很好奇这到底在传达什么?我在 html 文件输入上下文中看到了 fakepath,但是 fakesource 对于 python 源代码和调试器意味着什么?这是说我正在执行二进制实现或汇编代码还是其他什么?

最佳答案

在本例中,plot.circle 是由 bokeh 库在运行时生成的函数。为了生成此函数,bokeh 动态创建了一些源代码并将其编译为 Python 函数。

编译此类源代码时,可以给出一个文件名来指示其来源。这允许诸如 pdb 之类的工具加载该源代码以便将其显示给您。在本例中,bokeh 已将此文件名设置为fakesource

(如果您想亲自查看的话,负责此操作的代码是 bokeh.plotting.helpers)

关于python - "fakesource"在 python pdb 调试 session 中指什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44445794/

相关文章:

python - 总是在异常时调用 python 调试器的好通用方法

Python 对 .txt 文件中的 IP 地址列表运行 DNS 查找

python - 加载数据未正确处理时间戳和时区

python - 在保存到数据库之前在 session 中使用实例

python 多处理僵尸进程

python - 使用 IPython 逐步调试

python - 如何修复 pylab.pause 附带的弃用警告?

entity-framework - 如何获取 EntityFramework NuGet 包的 PDB 文件?

python - 在 Python 代码中放置 PDB 断点的更简单方法?

python - 如何在开发过程中调试 sublime 插件