当所有扩展都被禁用时,是否会出现这个问题?:是/否
- VS Code 版本:1.72.0
- OS 版本:Windows_NT x64 10.0.19044
重现步骤:
- 使用 command pickProcess 定义一个调试附加类型。
- 创建一个任务示例
- 将创建的任务示例指定为 preLaunch。
- 运行
我还尝试过在 VS Code Insiders 和 C++ 工具预发布版中测试。
示例:
任务定义
{
"label": "Deployment-tools-start-simulators",
"isBackground": false,
"type": "shell",
"command": "${workspaceFolder}/rig_common/deployment_tools/build/sim/default_rig/start.sh",
"options": {
"cwd": "${workspaceFolder}/rig_common/deployment_tools/build/sim/default_rig",
"env": {
"DISPLAY": "${env:DISPLAY}",
"USE_GUI": "${input:useGui}",
"USE_HTML": "0",
"USE_VNC": "0",
}
},
"problemMatcher": [],
启动定义
//启动模拟器,选择并附加到 ioSim,调试结束后停止。
{
"name": "(gdb) Start simulators & Attach Process to AcdsIoSim",
"type": "cppdbg",
"request": "attach",
"program": "${workspaceFolder}/build/sim/default/AcdsIoSim.bin",
"processId": "${command:pickProcess}",
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
},
],
"preLaunchTask": "Deployment-tools-start-simulators",
"postDebugTask": "Deployment-tools-stop-simulators",
},
我尝试过使用一个简单的任务,如 pip list
{
"label": "pip list",
"type": "shell",
"command": "pip list",
"problemMatcher": [{
"pattern": [{
"regexp": ".",
"file": 1,"line": 1,
"column": 1,"message": 1
}],
/* "background": {
"activeOnStart": true,
"beginsPattern": { "regexp": "." },
"endsPattern": { "regexp": "." }
},*/
}]
},
结果相同。
我看到有不同的问题报告了这个问题:
debugger attach pickProcess should run after preLaunchTask #9773
Launch preLaunchTask should complete before resolveDebugConfiguration #95162
但是没有一个有效。
能帮我解决一下吗?
谢谢。
9条答案
按热度按时间ki0zmccv1#
不知何故,#95162的修复已经退化了,尽管代码更改已经到位。
xwbd5t1u2#
实际上不是,这只是关于preLaunchTask + resolveDebugConfiguration的顺序,而不是解析变量。一个可能的问题是,在启动preLaunchTask之前解析变量是有意义的,比如向任务传递参数。如果这是一个问题,也许我们甚至可以这样做:在preLaunchTask中解析变量,启动任务,然后解析剩余的变量。
ua4mk5z43#
我在当前版本的VS Code(1.84.2)中遇到了相同的问题。在
launch.json
中的${command:pickProcess}
在我的preLaunchTask
有机会启动进程之前就已经执行了。下面是一个非常简单的“Hello World”示例。我做错了什么吗?
launch.json
:tasks.json
:djp7away4#
关于这个问题,有没有更新?我仍然可以在VS Code的最新版本(1.85.1)中重现它。我应该创建一个新的问题吗?
xqnpmsa85#
我遇到了与@FelixLisczyk相同的问题。
我本以为"PreLaunchTask"会在processId / pickProcess提示出现之前发生,因为在preLaunch上有一些必要的设置会创建这个进程。
更多细节:
VSCode 1.85.2
在arm Macbook上运行
使用remote-ssh连接到linux设备
启动类型:go
emeijp436#
我也在C++项目中遇到了这个问题。然而,我注意到,如果我不指定
processId
,让它使用默认值(即command:pickProcess
),它会正确地先运行 preLaunchTask。如果我将processId
设置为command:pickProcess
(这是默认值),现在它会在 preLaunchTask 之前错误地运行。这对我来说是个问题,因为我试图编写一个自定义进程ID选择器,如果这样做,它总是在 preLaunchTask 之前运行。
版本:1.85.2(用户设置)
提交:8b37750
日期:2024-01-18T06:40:10.514Z
Electron:25.9.7
ElectronBuildId:26354273
Chromium:114.0.5735.289
Node.js:18.15.0
V8:11.4.183.29-electron.0
操作系统:Windows_NT x64 10.0.19044
c7rzv4ha7#
实际上不是这样的,这只是关于preLaunchTask + resolveDebugConfiguration的顺序,而不是解析变量。一个可能的问题是,在启动preLaunchTask之前解析变量是有意义的,比如向任务传递参数。如果这是一个问题,也许我们甚至可以这样做:在preLaunchTask中解析变量,启动任务,然后解析剩余的变量。
你好,
我这边也遇到了同样的问题。
如果我有自定义命令,比如动态获取程序,并且有一个preLaunchTask来构建项目,那么我的自定义命令将在preLaunchTask之前执行。
对我来说,@roblourens的建议解决了在不限制它们在preLaunchTask中使用的情况下解析命令的问题。
u91tlkcl8#
这绝对是#95162的回归,正如@FelixLisczyk的评论所示。
我的设置:
launch.json
:在我的案例中,
lldb_listen_port
的提示显示在"preLaunchTask": "start_lldb_server"
执行之前。这阻止了我调试我的应用程序。@roblourens,你能再看一下这个bug吗?
pftdvrlh9#
同时,不确定这是否是一个巧合或有意义的事情,但当我和@FelixLisczyk尝试使用LLDB进行调试时,我们都遇到了这个问题。