c# - 有什么方法可以使用 Visual Studio 和 PTVS 调试 C# 中嵌入的 Python 代码吗?

标签 c# visual-studio debugging ironpython ptvs

我已经创建了在 C# 中嵌入 IronPython 代码的代码

    public ScriptEngine GetEngine() {
        if( _engine != null )
            return _engine;

        _engine = Python.CreateEngine();
        var paths = _engine.GetSearchPaths();
        paths.Add( _pythonPath );
        _engine.SetSearchPaths( paths );

        var runtime = _engine.Runtime;
        runtime.LoadAssembly( typeof( CharacterCore ).Assembly );
        return _engine;
    }

    public IAbility Movement() {
        var engine = GetEngine();
        var script = engine.CreateScriptSourceFromFile( Path.Combine( _pythonPath, "movement.py" ) );
        var code = script.Compile();
        var scope = engine.CreateScope();
        code.Execute( scope );

        return scope.GetVariable( "result" );
    }

在同一解决方案的单独 Python 项目中使用适当的 Python 代码。代码本身有效,但如果我在 Python 代码中设置断点,它永远不会被击中。有没有办法让调试器进入 Python 代码?

我正在使用 Visual Studio 2015 RC(还有 Visual Studio 2013)、Visual Studio 的 Python 工具(以及用于 Python 代码的 IronPython Launcher)。我试过从字符串和文件创建脚本源,但调试永远不起作用。

最佳答案

像那样向CreateEngine添加选项

var options = new Dictionary<string, object> { ["Debug"] = true };
_engine = Python.CreateEngine( options );

并在允许调试嵌入式 Python 的调试选项中禁用“仅我的代码”,包括断点和单步执行。

感谢 Pavel Minaev 和 Joe 对问题的评论。

关于c# - 有什么方法可以使用 Visual Studio 和 PTVS 调试 C# 中嵌入的 Python 代码吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31369279/

相关文章:

c# - OpenID 和普通登录都在同一个 View 上吗?

javascript - 命中断点后编辑外部 JavaScript 文件

asp.net - VS 2013 ASP.NET调试时无法修改代码

java - eclipse中F11和Ctrl+F11的区别?

c# - 使用 LINQ 的分层数据表示

c# - 使用 Xunit 进行 .Net 核心测试

c# - 存储有关已登录 ASP.NET MVC 用户的附加信息

c++ - 为什么这个功能进入范围?

c# - 将子进程的输出(stdout、stderr)重定向到 Visual Studio 中的输出窗口

c++ - 重建而不重新编译预编译头文件