Не удается отладить C в коде VS с помощью gdb

#c #visual-studio-code

Вопрос:

Я пытаюсь отладить C в коде Visual Studio, но здесь что-то не так. Состояние отладки продолжает прокручиваться, но консоль не отображается. Если я остановлю отладку (shift F5), я не смогу выполнить отладку снова. Щелкните ли по зеленому треугольнику или по F5, ничего не произойдет. Отладочный снимок экрана

Здание в порядке. Это просто проблема с отладкой.
MinGW был добавлен в PATH. Я могу использовать g или gdb в CMD.

Мое окружение:

  • Операционная система: Windows10 1803
  • Код Visual Studio: 1.24.0
  • Расширение C/C : 0.17.4
  • MinGW_w64: x86_64-8.1.0-релиз-posix-seh-rt_v6-rev0

Вот мои настройки:

c_cpp_properties.json:

 {
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "C:/MinGW/include",
                "C:/MinGW/x86_64-w64-mingw32/include",
                "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  ",
                "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /backward",
                "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /tr1",
                "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /x86_64-w64-mingw32",
                "${workspaceFolder}"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE"
            ],
            "compilerPath": "C:/MinGW/bin/gcc.exe",
            "intelliSenseMode": "clang-x64",
            "browse": {
                "path": [
                    "C:/MinGW/include",
                    "C:/MinGW/x86_64-w64-mingw32/include",
                    "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include",
                    "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  ",
                    "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /backward",
                    "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /tr1",
                    "C:/MinGW/lib/gcc/x86_64-w64-mingw32/8.1.0/include/c  /x86_64-w64-mingw32",
                    "${workspaceFolder}"
                ],
                "limitSymbolsToIncludedHeaders": true,
                "databaseFilename": ""
            },
            "cStandard": "c11",
            "cppStandard": "c  17"
        }
    ],
    "version": 4
}
 

запуск.json:

 {
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) Launch",
            "preLaunchTask": "build",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}/${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "C:/MinGW/bin/gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }]
}
 

задачи.json

 {
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "type": "shell",
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "presentation": {
                "echo": true,
                "reveal": "always",
                "focus": false,
                "panel": "shared"
            },
            "windows": {
                "command": "g  ",
                "args": [
                    "-g",
                    ""${file}"",
                    "--std=c  11",
                    "-o",
                    ""${fileDirname}\${fileBasenameNoExtension}.exe""
                ]
            }
        }
    ]
}
 

настройки.json

 {
    "files.associations": {
        "iostream": "cpp",
        "ostream": "cpp",
        "cmath": "cpp",
        "array": "cpp",
        "chrono": "cpp",
        "functional": "cpp",
        "ratio": "cpp",
        "tuple": "cpp",
        "type_traits": "cpp",
        "utility": "cpp",
        "future": "cpp",
        "streambuf": "cpp",
        "sstream": "cpp",
        "initializer_list": "cpp",
        "valarray": "cpp"
    }
}
 

Комментарии:

1. Ваш путь к компилятору должен быть "compilerPath": "C:/MinGW/bin/g .exe" в файле c_cpp_properties.json

2. @HeheBoi Спасибо. Но все равно не получается.

3. Я застрял на этой проблеме примерно на 2 дня, и этот вопрос сработал для меня. Спасибо, что поделились этим

Ответ №1:

Я обнаружил, что это проблема с кодированием, и я решил ее сам.

Во-первых, попробуйте войти в gdb, чтобы выяснить, не возникает ли у вас та же проблема.
Включите "logging": { "engineLogging": true } , и если вы увидите что-то вроде

 1: (1992) ->amp;"3572732771001-gdb-set target-async onn"
1: (1993) ->amp;"Undefined command: "357". Try "help".n"
1: (1993) ->^error,msg="Undefined command: "357". Try "help"."
 

Тогда у вас та же проблема.

Чтобы исправить это, вам необходимо отключить Unicode UTF-8 для поддержки языков по всему миру, которая является бета-версией с Windows10 1803 и отключена по умолчанию.
Он находится на панели управленияЧасы и регионРегионАдминистративная система изменения местоположения (требуется авторизация администратора) — Бета — версия: Используйте Unicode UTF-8 для поддержки языков по всему миру (требуется перезагрузка системы).

Перейдите к вопросу, почему vscode просто зависает там, когда начинается отладка с gdb.exe? на GitHub для получения более подробной информации.

Комментарии:

1. Привет, где ты работаешь "logging": { "engineLogging": true } ? Я получаю неизвестный параметр конфигурации