VSCode调试mintty时命令行参数多了2>CON 1>CON <CON的问题

今天在调试mintty时,命令行参数始终多了几个参数2>CON 1>CON mintty是运行在MSYS环境的而不是运行在MinGW环境的,所以编译、调试都需要使用MSYS环境的编译器和调试器。

VSCode中添加MinGW64终端可以在settings.json中的terminal.integrated.profiles.windows中添加

"MinGW64": {
      "path": "G:\\msys64\\usr\\bin\\bash.exe",
      "args": ["--login", "-i"],
      "env": {
        "MSYSTEM": "MinGW64",
        "CHERE_INVOKING": "1",
        "MSYS2_PATH_TYPE": "inherit"
      }
    }

下面是terminal.integrated.profiles.windows的完整配置

"terminal.integrated.profiles.windows": {
    "PowerShell": {
      "source": "PowerShell",
      "icon": "terminal-powershell",
    },
    "Command Prompt": {
      "path": [
        "${env:windir}\\Sysnative\\cmd.exe",
        "${env:windir}\\System32\\cmd.exe"
      ],
      "args": ["/K chcp 65001 >nul"],
      "icon": "terminal-cmd"
    },
    "Git Bash": {
      "source": "Git Bash"
    },
    "MinGW64": {
      "path": "G:\\msys64\\usr\\bin\\bash.exe",
      "args": ["--login", "-i"],
      "env": {
        "MSYSTEM": "MinGW64",
        "CHERE_INVOKING": "1",
        "MSYS2_PATH_TYPE": "inherit"
      }
    },
    "MSYS": {
      "path": "G:\\msys64\\usr\\bin\\bash.exe",
      "args": ["--login", "-i"],
      "env": {
        "MSYSTEM": "MSYS",
        "CHERE_INVOKING": "1",
        "MSYS2_PATH_TYPE": "inherit"
      }
    },
  },

然后使用make DEBUG=1编译调试版本。
VSCode调试mintty时命令行参数多了2>CON 1>CON <CON的问题_第1张图片
使用默认配置launch.json,修改programmiDebuggerPath调试:

{
	// 使用 IntelliSense 了解相关属性。
	// 悬停以查看现有属性的描述。
	// 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
	"version": "0.2.0",
	"configurations": [
		{
			"name": "(gdb) 启动",
			"type": "cppdbg",
			"request": "launch",
			"program": "${workspaceFolder}/bin/msys64/mintty.exe",
			"stopAtEntry": false,
			"cwd": "${workspaceFolder}",
			"environment": [],
			"externalConsole": false,
			"MIMode": "gdb",
			"miDebuggerPath": "G:/msys64/usr/bin/gdb.exe",
		}
	]
}

发现命令行参数多了3个参数:2>CON1>CON

VSCode调试mintty时命令行参数多了2>CON 1>CON <CON的问题_第2张图片
但是VSCode下使用MinGW64gdb调试是正常的(mintty依赖MSYS,不能使用MinGW64中的gdb调试,笔者是使用的一个不依赖MSYS的简单demo测试的),只要使用/usr/bin/gdb.exe就会有这个问题。

原来是launch.jsonexternalConsole参数的问题,将之改为true,即使用外部终端就正常了。

你可能感兴趣的:(IDE,MSYS2,vscode,mingw,msys,调试,CON)