在托管/嵌入式C#中调试IronPython

问题描述 投票:0回答:1

我正在开发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文件中设置断点,没有任何反应。

c# visual-studio ironpython visual-studio-debugging visual-studio-2019
1个回答
1
投票

如上所述,它没有调试模式就可以正常工作。我认为为什么在调试模式下不会遇到断点的原因是调试器无法找到它。

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

之后,断点可以如下所示:

enter image description here

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

© www.soinside.com 2019 - 2024. All rights reserved.