在VSCode扩展中检测调试模式

arb*_*arb 5 visual-studio-code vscode-extensions

我正在开发VSCode扩展,并且我想编写一个简单的日志记录实用程序,该实用程序仅在调试期间记录到控制台,否则,它是无操作的。

扩展中某处是否有标志或值表示调试正在进行中?

小智 6

如果有人仍然需要它,一种解决方案是在调试模式下启动客户端时使用自定义环境变量。

在您的launch.json文件中:

{
    "type": "extensionHost",
    "request": "launch",
    "name": "Launch Client",
    "runtimeExecutable": "${execPath}",
    "args": ["--extensionDevelopmentPath=${workspaceRoot}"],
    "outFiles": ["${workspaceRoot}/client/out/**/*.js"],
    "env": {
        "VSCODE_DEBUG_MODE": "true"
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像这样在代码中检查它:

const isDebugMode = () => process.env.VSCODE_DEBUG_MODE === "true";

export function activate(context: ExtensionContext) {
  if (isDebugMode()) {
    // Debug ...
  } else {
    // Else ...
  }
}
Run Code Online (Sandbox Code Playgroud)


Jul*_*eam 0

似乎不受官方支持:https ://github.com/Microsoft/vscode/issues/10077

无论如何,我发现了这种平静的代码,不知道它有多好:

function startedInDebugMode() {
  let args = process.execArgv;
  if (args) {
    return args.some((arg) => /^--debug=?/.test(arg) || /^--debug-brk=?/.test(arg));
  }
  return false;
}
Run Code Online (Sandbox Code Playgroud)