【问题标题】:Debug IronPython in hosted/embedded C#在托管/嵌入式 C# 中调试 IronPython
【发布时间】:2019-04-03 19:35:10
【问题描述】:

我正在开发 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 文件中设置断点并在通过 C# 运行时在 Visual Studio、Pycharm 中逐步调试它。

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

【问题讨论】:

  • 你用的是哪个版本的VS?
  • 我正在使用 Visual Studio 2019
  • 设置断点后,选择开始调试(F5),有什么反应吗?请在解决方案资源管理器中检查您的 python 环境以确保环境正常。
  • Breakpoints 仅适用于 C# 代码,对于 python,它表示“当前不会命中断点。没有为此文档加载任何符号”。 @LanceLi-MSFT 您可以发送屏幕截图,如何配置所有内容吗?这就是我所拥有的monosnap.com/file/JarPr2hOfdTXqP7oPUoMdjXyAVPRmf
  • 你在调试模式下开始调试吗?如果您创建一个新 IronPython 项目,添加断点并对其进行调试,结果会怎样?能成功吗?

标签: c# visual-studio ironpython visual-studio-debugging visual-studio-2019


【解决方案1】:

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

Go=&gt;Debug=&gt;Options=>取消选中Enable Just My Code 以检查它是否有帮助。

注意:

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

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

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

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

【讨论】:

  • 很高兴知道我的回答有帮助 :) 祝你有美好的一天!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2010-10-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多