Мне нужна помощь в написании кода C в vscode в wsl - PullRequest
1 голос
/ 26 марта 2020

Я загрузил компилятор g cc в свою среду linux и использовал s sh, чтобы войти в vscode для имитации среды linux на моей машине windows. Файлы, которые я создал, компилируют и make-файл, который мне дал мой профессор, работает нормально, однако всякий раз, когда я go отлаживаю с помощью отладчика gdb, который также предоставляет мой профессор, который правильно отформатирован, отладчик зависает и не позволяет мне проходить через мой код с точками разрыва. Я предоставляю код для отладчика, а также свойства cpp и файлы задач.

код отладчика:

{
    // 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": "gcc build debug stacks",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/runner",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "make stack runner"
        }
    ]
}

cpp свойства:

{
    "configurations": [
        {
            "name": "Linux",
            "includePath": [
                "${workspaceFolder}/**"
            ],
            "defines": [],
            "compilerPath": "/usr/bin/gcc",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x64"
        }
    ],
    "version": 4
}

задачи:

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "make stack runner",
            "command": "make -f makefile DEBUG=1",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "reveal": "always",
                "panel": "new"
            },
            "problemMatcher": [
                "$gcc"
            ]
        },

    ]
}

1 Ответ

0 голосов
/ 04 апреля 2020

Я не думаю, что вы требуете задач как cpp_properties. Я могу прекрасно использовать отладку на WSL только с файлом launch.json (код отладчика, который вы упомянули), который я дам, но я уверен, что ваша проблема будет решена, если

1) установить externalConsole вариант как ложный. По какой-то причине он не работает в windows, если установлено значение "true". С помощью этой опции ваша программа будет работать во встроенной консоли, так что вы можете быть обмануты, думая, что ваша программа не запущена, если ваша программа не имеет выходов до первой команды scanf() или cin, а ваши точки останова - после них. Поэтому, чтобы быть уверенным, установите точки останова в первой строке функции main(), чтобы не допустить этой классической c newb ie ошибки.

2) Убедитесь, что при компиляции программы вы используете переключатель -g. Таким образом, ваша команда компиляции должна выглядеть так: gcc -g path\to\prog.cpp -o a.out

3) Убедитесь, что в вашем program указан путь к этому исполняемому файлу. Если это a.out сгенерировано в папке root вашего рабочего пространства, тогда ваши настройки будут

"program":"${workspaceFolder}/a.out"

Это должно подойти.

Мой запуск. json значение равно

{
// 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": "WSL debugging",
        "type": "cppdbg",
        "request": "launch",
        "program": "${workspaceFolder}/a.out",
        "args": [],
        "stopAtEntry": true,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Enable pretty-printing for gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ]
    }
]

}
...