Visual Studio代码launch.json runtimeArgs在参数

时间:2017-09-12 11:56:18

标签: json visual-studio-code

我正在使用'Debugger for Chrome'扩展程序运行Visual Studio Code来调试一些javascript。但是,我想在调试时运行一个进程外的pepper插件。

在Visual Studio Code之外,我们通过将以下命令行标志传递给chrome.exe(以及其他)来完成此操作:

--register-pepper-plugins="path_to_plugin";mime_type

注意:需要双引号

要通过Visual Studio Code将命令行参数传递给Chrome,我设置了一个launch.json并增加了以下内容:

"runtimeArgs" : ["--register-pepper-plugins=\"path_to_plugin\";mime_type"]

我可以看到使用ProcessExplorer将我的runtimeArgs传递给Chrome,但转义字符\原封不动,因此chrome实际收到的是:

--register-pepper-plugins=\"path_to_plugin\";mime_type

而不是

--register-pepper-plugins="path_to_plugin";mime_type

如果删除转义字符,我只能

--register_pepper_plugins=

因为第二个双引号与第一个匹配。

我在做一些令人眼花缭乱明显的错误吗?

2 个答案:

答案 0 :(得分:1)

在参数中转义引号是 vscode 中的历史事件 - 请参阅 their issue discussion 底部附近的解释帖子。

与此同时,如果您使用此 (launch.json) 配置设置,您可以在一定程度上解决它:

"console": "internalConsole",

截至今天,如果通过该内部控制台运行命令,vscode 不会转义任何内容。 “externalTerminal”值也有效。如果使用内部控制台,请考虑选择“internalConsoleOptions”以查看其中发生的情况。

答案 1 :(得分:0)

这样做的方法是使用反弹来逃避你的额外报价,例如:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch",
        "type": "go",
        "request": "launch",
        "mode": "exec",
        "remotePath": "",
        "port": 2345,
        "host": "127.0.0.1",
        "program": "C:\\Geth\\gs\\bin\\geth.exe",
        "env": {},
        "args": ["--datadir",
             "/tmp/eth/60/01" ,
            "--verbosity",
            "9",
            "--nodiscover", 
            "--bootnodes",
            "enode://c50f8c5a50b898ab66231754855c582548ce722311e73c5e664a563ff35d8bddb26c10c74c2ebe62c69c6c7ed00031ef3e2d7fd563ff77cff91775cd3f07e4c3@[::]:30301",  
            "--ipcdisable",
            "--port",
            "30303", 
            "--rpcport",
            "8101",
            "console 2"],
        "showLog": true
    }
]

}