简体   繁体   English

如何使用 python 在 VSCode 上调试 Google Code Jam 交互问题?

[英]How to debug Google Code Jam interactive problems on VSCode using python?

I tried downloading the example interactive problem number guessing problem .我尝试下载示例交互式问题数字猜测问题 They offer a local testing tool in the Description tab, a python solution in the Analysis tab, a interactive_runner.py that runs both scripts simultaneously.他们在描述选项卡中提供local testing tool ,在分析选项卡中提供 python 解决方案,同时运行两个脚本的interactive_runner.py

After saving the solution in a solution.py , I can run this on shell successfully with: python3 interactive_runner.py python3 local_testing_tool.py 0 -- python3 solution.py .将解决方案保存在solution.py后,我可以在 shell 上成功运行: python3 interactive_runner.py python3 local_testing_tool.py 0 -- python3 solution.py

The problem is I can't debug it using VSCode.问题是我无法使用 VSCode 调试它。 I tried putting all 3 files in one folder and using the following launch.json:我尝试将所有 3 个文件放在一个文件夹中并使用以下启动。json:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Arquivo Atual",
            "type": "python",
            "request": "launch",
            "program": "interactive_runner.py python3 local_testing_tool.py 0 -- python3 ${file}",
            "console": "integratedTerminal",
        }
    ]
}

When I run solutions.py with the debugger I get the error:当我使用调试器运行solutions.py 时,出现错误:

env DEBUGPY_LAUNCHER_PORT=40453 /home/user/.pyenv/versions/3.8.2/bin/python3.8 /home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/launcher "interactive_runner.py python3 local_testing_tool.py 0 -- python3 /home/user/workspace/wargames/GoogleCodeJam/2018/PracticeSession/NumberGuessing/solution.py" 
Traceback (most recent call last):
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 193, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/__main__.py", line 45, in <module>
    cli.main()
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/../debugpy/server/cli.py", line 430, in main
    run()
  File "/home/user/.vscode/extensions/ms-python.python-2020.4.74986/pythonFiles/lib/python/debugpy/no_wheels/debugpy/../debugpy/server/cli.py", line 267, in run_file
    runpy.run_path(options.target, run_name=compat.force_str("__main__"))
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 262, in run_path
    code, fname = _get_code_from_file(run_name, path_name)
  File "/home/user/.pyenv/versions/3.8.2/lib/python3.8/runpy.py", line 232, in _get_code_from_file
    with io.open_code(fname) as f:
FileNotFoundError: [Errno 2] No such file or directory: 'interactive_runner.py python3 local_testing_tool.py 0 -- python3 /home/user/workspace/wargames/GoogleCodeJam/2018/PracticeSession/NumberGuessing/solution.py'

Any better approach on how to do it?关于如何做到这一点有更好的方法吗?

The "program" argument expects only the path to a file, hence the error about there being "no such file or directory". "program"参数只需要文件的路径,因此会出现“没有这样的文件或目录”的错误。 What you want to do is take the rest of your execution line and make them arguments:您要做的是获取执行行的 rest 并将它们设为 arguments:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Python: Arquivo Atual",
            "type": "python",
            "request": "launch",
            "program": "interactive_runner.py",
            "console": "integratedTerminal",
            "args": ["python3", "local_testing_tool.py", "0", "--", "python3", "${file}"]  // Not sure if `${file}` will work here.
        }
    ]
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM