VSCode -- 如何设置调试工作目录

Posted

技术标签:

【中文标题】VSCode -- 如何设置调试工作目录【英文标题】:VSCode -- how to set working directory for debug 【发布时间】:2016-12-02 01:33:32 【问题描述】:

我开始在 Python 中使用 vscode。我有一个简单的测试程序。我想在调试下运行它,我需要为运行设置工作目录。

我该如何/在哪里这样做?

【问题讨论】:

【参考方案1】:

@SpeedCoder5 的评论值得回答;

具体可以指定一个动态的工作目录; (即当前打开的 Python 文件所在的目录),使用 "cwd": "$fileDirname"——这利用了 "variables reference" feature in VS Code 和预定义变量 fileDirname

如果您在运行 Python 时使用Python: Current File (Integrated Terminal) 选项,您的launch.json 文件可能与我的类似,如下所示(more info on launch.json files here)。


    "version": "0.2.0",
    "configurations": [
    
            "name": "Python: Current File (Integrated Terminal)",
            "type": "python",
            "request": "launch",
            "program": "$file",
            "console": "integratedTerminal",
            "cwd": "$fileDirname"
    , 

    //... other settings, but I modified the "Current File" setting above ...

Remember the launch.json file controls the run/debug settings of your Visual Studio code project;我的launch.json 文件是由VS Code 自动生成的,位于我当前的“打开项目”目录中。我只是手动编辑文件以添加"cwd": "$fileDirname",如上所示。

请记住launch.json 文件可能特定于您的项目或特定于您的目录,因此请确认您正在编辑正确 launch.json(见评论)

如果你没有launch.json 文件,try this:

要创建 launch.json 文件,请在 VS Code 中打开您的项目文件夹(文件 > 打开文件夹),然后选择调试视图顶部栏上的配置齿轮图标。

【讨论】:

有什么方法可以将此设置为所有配置的默认设置? 确保您正在编辑正确的 launch.json 文件!根据我的经验,VS Code 在我打开的每个项目文件夹中都会创建一个 .vscode 目录。如果昨天您打开了文件夹 parent/ 而今天您打开了 parent/child/,则您必须进行适当的更改。 还有一个类似launch.json的文件:workspace[x].code-workspace。它有一个“启动”键。这个设置是否类似于launch.json条目? 我可以将终端中的文件夹设置为脚本所在的文件夹吗?例如。我的最后一个 ps1 脚本行是 set-location foo,我希望终端位于 foo 中。 这个答案对我不起作用,但这个答案对我有用:***.com/a/62331298/65326【参考方案2】:

您需要做的就是在launch.json文件中配置cwd设置如下:


    "name": "Python",
    "type": "python",
    "pythonPath":"python", 
    ....
    "cwd": "<Path to the directory>"
    ....

更多信息可以在on the official VS Code docs website找到。

【讨论】:

是的,做到了。我看到它实际上是.vscode目录,所以我想我需要在末尾添加\..,对吧? 是的,会相应地修改答案 "cwd": "$fileDirname" 在开源文件当前目录运行 很好地指出文档【参考方案3】:

此设置对我有帮助:


  "type": "node",
  "request": "launch",
  "name": "Launch Program",
  "cwd": "$workspaceFolder\\app\\js", // set directory here
  "program": "$workspaceFolder\\app\\js\\server.js", // set start js here

【讨论】:

非常感谢 :)【参考方案4】:

在某些情况下,将PYTHONPATHworkspaceFolder 一起设置可能也很有用:


    "name": "Python: Current File",
    "type": "python",
    "request": "launch",
    "program": "$file",
    "console": "integratedTerminal",
    "cwd": "$workspaceFolder",
    "env": 
        "PYTHONPATH": "$cwd"
    


【讨论】:

谢谢,有帮助。但我不确定我是否理解为什么需要这样做。你能解释一下吗?【参考方案5】:

我为在 Node.js 上使用 TypeScript 的人发布此示例配置

在我的项目中,我的 Node.js 服务器 TypeScript 文件位于文件夹 Application_ts 并在名为Application的文件夹中生成编译好的js文件

因为当我们在调试模式下运行我们的应用程序或正常启动它时,我们应该从包含 js 文件的 Application 文件夹开始 所以下面的配置从我的 application_ts 也存在并且完美运行的根文件夹中运行调试


  "version": "0.2.0",
  "configurations": [
    
        "type": "node",
        "request": "launch",
        "name": "Debug TypeScript in Node.js",
        "program": "$workspaceRoot\\Application\\app.js",
        "cwd": "$workspaceRoot\\Application",
        "protocol": "inspector",
        "outFiles": [],
        "sourceMaps": true
    ,        
    
        "type": "node",
        "request": "attach",
        "name": "Attach to Process",
        "port": 5858,
        "outFiles": [],
        "sourceMaps": true
    
 ]

【讨论】:

【参考方案6】:

您可以使用launch.json 中的cwd 参数为被调试程序设置当前工作目录

【讨论】:

超级!让我进入下一步。现在,尝试在调试中实际运行程序。这是代码: print (os.getcwd()) 超级!让我进入下一步。我有一个要调试的单行:print (os.getcwd())。我点击调试图标(或按 F5),在 Environment 下拉菜单下有一条蓝色的小移动线。但是,我的代码永远不会运行。猜猜我错过了什么。那会是什么? 忘记最后两个,我明白了 接下来的事情。使用该建议,我惊讶地发现 $workspaceRoot 实际上不是根目录,而是根目录下的 .vscode 目录。这是预期的吗?如果是这样,我可以将 cwd 设置为 $workspaceRoot\..(在 windows 上)【参考方案7】:

将当前工作目录设置为您当时正在执行的任何文件:

文件 > 首选项 > 设置 > Python > 数据科学 > 在文件目录中执行

谢谢brch:Python in VSCode: Set working directory to python file's path everytime

【讨论】:

以上是关于VSCode -- 如何设置调试工作目录的主要内容,如果未能解决你的问题,请参考以下文章

如何在VSCode上更改Python(Anaconda)的默认工作目录?

如何使用 Angular 和 Flutter(都是 Dart)为工作区设置 VS Code 调试?

如何从vscode中的工作区符号搜索中忽略目录

使用visual studio调试时正确设置工作目录

vscode用户设置与工作区设置

如何使用不同的目录设置远程调试