debugging 是否可以调试另一个可执行文件正在运行的Python脚本?

0yg35tkg  于 2023-08-06  发布在  Python
关注(0)|答案(1)|浏览(138)

我正在修改(我的)python脚本,我正在将其馈送到(不是我的)运行它的可执行文件。我希望在可执行文件开始单步执行脚本时能够单步执行脚本,但可执行文件的调试模式对我不可用。
尽管Visual Studio允许你附加到一个外部进程来开始调试,但我想知道我是否可以在上面的程序中暂停一下,我想在那里单步执行并类似地附加到一个python脚本。我想知道是否有一个pdb集成可以实现这一点。
可执行文件似乎不会对python本身进行系统调用,也不能在可执行文件外部调用此脚本。
我使用Visual Studio 2022,但如果存在其他选项,我也愿意接受。
我在文件的开头添加了“import pdb”,并在可执行文件命中python脚本中的**input(“some text”)**行时尝试从Visual Studio中“Attach Process”。我附加到可执行文件,正如预期的那样...不起作用

dffbzjpn

dffbzjpn1#

我附加到可执行文件,正如预期的那样...不起作用
如果你说的是基于pdb文件的python程序,在visual studio中使用attach process功能进行调试,**我认为答案是否定的。**这种情况,你遇到的也是意料之中的。
你需要知道python的pdb和visual studio的pdb之间的区别,它们是不同的。

1,python中pdb的概念。

python中pdb的概念意味着一个模块,它是Python的内置调试器。pdb模块定义了一个交互式源代码调试环境。可以设置断点、单步执行代码、查看堆栈跟踪、列出源代码以及查看和更改源代码的运行时状态。pdb模块的名称来自“Python DeBugger”的首字母缩写。

2,visual studio中pdb的概念。

但是visual studio中的pdb的概念是不同的。Visual Studio的.pdb文件是程序数据库文件(Program Database File),其中包含程序的调试信息。此信息包括类型信息、函数签名、变量名以及其他可帮助您在Visual Studio中调试程序的信息。Visual Studio中的.pdb文件与Python的pdb模块没有直接关系。
看看这个微软官方文档:
使用调试器功能
您可以看到:

  • 要在附加到进程时使用Visual Studio调试器的全部功能(如命中断点),应用程序必须完全匹配本地源代码和符号。也就是说,调试器必须能够加载正确的符号(.pdb)文件。*

因此,如果你没有PDB文件,那么在visual studio中无法通过附加进程功能分步调试程序是意料之中的。
查看这份官方文件:
Specify symbol (.pdb) and source files in the Visual Studio debugger (C#, C++, Visual Basic, F#)
你会知道这是针对C#,C++,Visual Basic,F#。
对于Python,调试原则在这里:
Debug your Python code
你可以看到,调试的原理与基于PDB文件的附加程序方式完全不同。

相关问题