我有一个我想调试的java项目。项目代码假设在我们的远程调试环境中存在指向正在运行的服务的某些变量,如果不存在,它将崩溃。
我正在尝试在 VSCode 中进行调试,所以现在的挑战是从保险库中获取这些秘密变量并为我的调试会话填充它们。
我尝试了几种方法,但到目前为止没有任何效果。下面是我最近努力的一个例子。我尝试将
inputs
功能与 command
类型一起使用,但似乎您可以使用的唯一有效命令是扩展注册到 VSCode 的命令。我不能只运行一个 shell 命令。
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Local Debugging",
"type": "java",
"mainClass": "com.company.appname",
"request": "launch",
"env": {
"MYVARNAME": "${input:VARNAME}"
}
}
],
"inputs": [
{
"id": "VARNAME",
"type": "command",
"command": "program-to-execute",
"args": [
"-arg1",
"value1"
]
}
]
}
program-to-execute
是我在本地计算机上的一个程序的名称,该程序执行一些自定义操作,最终在您作为参数之一提供的路径上执行对 vault 的读取。但是这种方法失败了,因为 program-to-execute
不是默认情况下或通过扩展在内部向 VSCode 注册的命令。
在我的谷歌搜索中,我还没有找到一种方法来执行任意 shell 命令并将结果用作调试会话的 env var 值。
查看Tasks Shell Input并查看
useSingleResult
属性
可能是通过shell命令在文件中生成你想要的数据并返回一个空字符串,然后使用Command Variable读取文件内容作为键值,JSON或Yaml文件