отладка с++

Отладка с++ файлов в среде VS code конечно же есть, но настройка не совсем тривиальная по причине слишком большого количества расширений, где по сути весь функционал для среды разработки и заложен.

Вот так выглядит отладка, когда она работает:

фотка 1

Но чтобы отладка заработала сначала лучше вспомнить фундоментальные моменты отладки.

gdb

Во первых мы говорим про gdb отладчик.

/Zi

Во вторых надо компилировать файлы с ключом /Zi. Это для компилятора от microsoft соответственно (cl.exe).

В cmake (если вы конечно его используете для сборки) надо добавить: 

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Zi") 

pdb

В результате в каталоге (куда собирается наш проект) вместе с исполнимым файлом появится *.pdb файл (это символьная информация для отладки). 

Без pdb отладка не  пойдет.

Поиск работающего отладчика из расширений

Их совсем оказывается не мало. К тому же они работают в разных режимах.

launch.json

Все отладчики прописывают свои настройки в файле launch.json

Приведу файл launch.json, в котором работает только вариант отладчика "name": "(Windows) Launch", но он заработал первым, а до этого была череда неудач:

{
    "configurations": [
        {
            "name": "(Windows) Launch",
            "type": "cppvsdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\msvc-2022x86_amd64\\Debug\\test1.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [],
            "console": "externalTerminal",
            "visualizerFile": "c:\\Users\\p\\AppData\\Roaming\\Code\\User\\workspaceStorage\\c3e9640b9d6421b32424420c8bcfe274\\tonka3000.qtvsctools\\qt.natvis.xml"
        },
        {
            "type": "vgdb",
            "request": "attach",
            "name": "C/C++ Debug Attach",
            "program": "${workspaceFolder}\\msvc-2022x86_amd64\\Debug\\test1.exe"
        },
        {
            "name": "(gdb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}\\msvc-2022x86_amd64\\Debug\\test1.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${fileDirname}",
            "environment": [
                {
                    "name": "config",
                    "value": "Debug"
                }
            ],
            "externalConsole": true,
            "MIMode": "gdb",
            "miDebuggerPath": "D:\\MinGW\\bin\\gdb.exe",
            "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
                }
            ],
            "visualizerFile": "c:\\Users\\p\\AppData\\Roaming\\Code\\User\\workspaceStorage\\c3e9640b9d6421b32424420c8bcfe274\\tonka3000.qtvsctools\\qt.natvis.xml"
        },
        {
            "type": "cmake",
            "request": "launch",
            "name": "CMake: Configure project",
            "cmakeDebugType": "configure",
            "clean": false,
            "configureAll": false
        },
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003
        },
        {
            "type": "cmake",
            "request": "launch",
            "name": "Debug portfile(s)",
            "cmakeDebugType": "external",
            "pipeName": "\\\\.\\pipe\\vcpkg_ext_portfile_dbg",
            "preLaunchTask": "Debug vcpkg commands"
        }
    ]
}

В общем у нас заработал отладчик GDB Debug v1.0.7 от DamianKoper:

фотка 2