在 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
以查看是否有帮助。
注:
将 .net 核心应用设置为启动项目
如果取消选中Enable Just My Code
没有帮助,我建议你去tools->Import/Export Settings->reset all settings
,然后再次取消选中Enable Just My Code
。
之后,可以像下面这样打断点:
另外:我使用 .net 控制台应用程序进行重现和测试,但我认为它具有与 web-app 类似的行为。如有任何更新,请随时与我联系 :)
我正在开发 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
以查看是否有帮助。
注:
将 .net 核心应用设置为启动项目
如果取消选中
Enable Just My Code
没有帮助,我建议你去tools->Import/Export Settings->reset all settings
,然后再次取消选中Enable Just My Code
。
之后,可以像下面这样打断点:
另外:我使用 .net 控制台应用程序进行重现和测试,但我认为它具有与 web-app 类似的行为。如有任何更新,请随时与我联系 :)