在 hosted/embedded C# 中调试 IronPython

Debug IronPython in hosted/embedded C#

我正在开发 asp.net 核心应用程序 + IronPython。 但是我遇到了调试问题...

例如我有以下代码:

Dictionary<string, object> options = new Dictionary<string, object>();
options["Debug"] = true;
ScriptEngine engine = Python.CreateEngine(options);

// output redirect
var eIO = engine.Runtime.IO;

var errors = new MemoryStream();
eIO.SetErrorOutput(errors, Encoding.Default);

var result = new MemoryStream();
eIO.SetOutput(result, Encoding.Default);

// execute script
ScriptScope scope = engine.CreateScope();
scope.SetVariable("testGlobalVar", 10);
engine.ExecuteFile(ScriptPath, scope);

在 python 文件中

some = "Test"

print(Test)
print("We have ->", testGlobalVar)

它工作正常,但我不知道如何在python文件中设置断点并在Visual Studio、Pycharm(随便)中逐步调试它,当运行 通过 C#。

我找到了 this question 但它几乎完全没用。我在 python 文件中设置断点但没有任何反应。

因为如您所述,它在没有调试模式的情况下运行良好。我认为在调试模式下不会命中断点的原因是调试器找不到它。

Go=>Debug=>Options=>取消选中Enable Just My Code以查看是否有帮助。

注:

  1. 将 .net 核心应用设置为启动项目

  2. 如果取消选中Enable Just My Code没有帮助,我建议你去tools->Import/Export Settings->reset all settings,然后再次取消选中Enable Just My Code

之后,可以像下面这样打断点:

另外:我使用 .net 控制台应用程序进行重现和测试,但我认为它具有与 web-app 类似的行为。如有任何更新,请随时与我联系 :)