【发布时间】:2018-05-05 00:11:33
【问题描述】:
我在带有 Linux 子系统的 Windows 10 上使用 Visual Studio Code。 (Ubuntu)
我创建了一个小的 c++ 文件,当我使用 bash 终端构建它时 - 只创建了一个 .out 文件。这很好,但我也想调试它,在这种情况下 - 我只能打开 .exe 文件。
当我从 bash 切换到 powershell - 构建扩展是一个 .exe
tasks.json
{
"version": "2.0.0",
"tasks": [
{
"label": "echo",
"type": "shell",
"command": "g++",
"args": [
"-g", "main.cpp"
],
"group": { "kind": "build", "isDefault": true }
}
]
}
launch.json for debugging
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/a.exe", // .out doesn't work here
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "gdb",
"miDebuggerPath": "C:\\MinGW\\bin\\gdb.exe",
"preLaunchTask": "echo",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
main.cpp
#include <iostream>
int main() {
std::cout << "hello a" << std::endl;
}
我真的不知道该怎么做 - 因为我无法调试 .out 文件,我想自己选择构建扩展。
【问题讨论】:
-
您正在从 linux 机器(WSL 终端大致是 linux 虚拟机)调用 g++,因此它会生成与 linux 兼容的二进制文件。如果您希望它为不同的机器(例如您的 windows 机器)生成二进制文件,则必须进行交叉编译(我自己从未做过,但编译器倾向于支持它)
-
谢谢@Justin - 感谢您的交叉编译提示,找到了解决方案。
-
g++ -g main.cpp -o main.exe 对吗?
标签: c++ bash visual-studio-code windows-subsystem-for-linux