猿问

混合模式调试 Python/C# 使用子进程调试强力工具

我正在尝试调试(命中断点)一个通过 C# 中的新进程执行的 python 脚本。


我已经安装了Child Process Debugging Power 工具,因为该工具应该允许人们这样做。


根据其文档,它需要两件事:


必须使用本机调试引擎调试父进程

父进程必须使用 CreateProcess 或 CreateProcessAsUser Win32 API 启动子进程。

我的流程创建如下:


ProcessStartInfo startInfo = new ProcessStartInfo();

Process p = new Process();


startInfo.CreateNoWindow = true;

startInfo.UseShellExecute = false;

startInfo.RedirectStandardOutput = false;

startInfo.RedirectStandardError = true;

startInfo.RedirectStandardInput = false;

...

p.StartInfo = startInfo;

p.EnableRaisingEvents = true;

p.Start();

据我所知,只要我使用


UseShellExecute = false; 

该过程应从 CreateProcess 开始。(要求 2)


在我的项目中,我还启用了本机代码调试。(要求 1)


我还在我的符号列表中包含了 python.pdb 和 python36.pdb。但是似乎我找不到 python3.pdb


'python.exe' (Win32): Loaded 'C:\...\Python36\python.exe'. Symbols loaded.

'python.exe' (Win32): Loaded 'C:\...\Python36\python36.dll'. Symbols loaded.

'python.exe' (Win32): Loaded 'C:\...\python3.dll'. Cannot find or open the PDB file.

当我使用调试符号安装 python 时,这不包括在内,我似乎在其他任何地方都找不到它。


我正在使用 Visual Studio 2017,没有遇到断点。


忽然笑
浏览 244回答 1
1回答

尚方宝剑之说

如果有人偶然发现这篇文章,请快速更新。我联系了这个工具的创建者,尽管它的描述可能表明我在这里尝试做的事情应该有效,但它没有。我与之交谈的人说他会与他的 Python 团队讨论这个问题,但我已经几个月没有听到任何消息了,所以我认为这不会很快发生。
随时随地看视频慕课网APP
我要回答