Automatyczne uruchamianie debuggera w vscode

Automatyczne uruchamianie debuggera w vscode
TI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Udało mi się skonfigurować debugger dla c++, bez tego rozszerzenia c/c++ od Microsoftu. Wystarczyło zainstalować rozszerzenie CodeLLDB i skonfigurować dwa pliki.
Jednak tam gdzie jest wpis test.cpp muszę za każdym razem wpisywać inną nazwę programu. W tych rozszerzeniach Microsoftu i innych edytorach/ide jest to wykonywane automatycznie.
Po prostu tam gdzie masz otwarty plik z kodem klikasz debuguj i debuguje, bez zmieniania ciągle nazwy programu w tym pliku "program": "${workspaceFolder}/test",
Czy da się to jakoś ustawić, aby to zautomatyzować i debugger sam wiedział jakiego programu używamy?
Mała poprawka trzeba zmieniać nazwę programu w trzech miejscach co jest dość uciążliwe.

Kopiuj
launch.json
"program": "${workspaceFolder}/test",

tasks.json
"${workspaceFolder}/test.cpp",
"${workspaceFolder}/test"

launch.json

Kopiuj
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "LLDB Debug",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/test", // Upewnij się, że ścieżka do programu jest poprawna
            "args": [],
            "cwd": "${workspaceFolder}",
            // "stopAtEntry": false,
            "env": {},
            "preLaunchTask": "build", // Jeśli masz zadanie do kompilacji
            // "runInTerminal": true // Możesz również ustawić na false, aby używać zintegrowanego terminala
        }
    ]
}

tasks.json

Kopiuj
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "clang++-22", // lub samo clang++
            "type": "process",
            "args": [
                "-g",
                "-stdlib=libc++", // Używaj libc++ jako biblioteki standardowej
                "-std=c++2c", // Dodaj tę linię, aby ustawić standard na C++23
                "${workspaceFolder}/test.cpp",
                "-o",
                "${workspaceFolder}/test"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        }
    ]
}
enedil
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1029
1

https://code.visualstudio.com/docs/reference/variables-reference

Kopiuj
${file} 	Currently opened file
${fileWorkspaceFolder} 	Currently opened file's workspace folder
${relativeFile} 	Currently opened file relative to workspaceFolder
${relativeFileDirname} 	Currently opened file's dirname relative to workspaceFolder
${fileBasename} 	Currently opened file's basename
${fileBasenameNoExtension} 	Currently opened file's basename with no file extension
${fileExtname} 	Currently opened file's extension
${fileDirname} 	Currently opened file's folder path
${fileDirnameBasename} 	Currently opened file's folder name

czyli użyj tych zamiast tych "${workspaceFolder}/test.cpp" itd

TI
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 11
0

Ok, udało się. Wszystko debuguje poprawnie w każdym pliku.
Tutaj poprawiona wersja.

launch.json

Kopiuj
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "LLDB Debug",
            "type": "lldb",
            "request": "launch",
            "program": "${workspaceFolder}/${fileBasenameNoExtension}", // Użycie zmiennej
            "args": [],
            "cwd": "${workspaceFolder}",
            "env": {},
            "preLaunchTask": "build", // Jeśli masz zadanie do kompilacji
        }
    ]
}

tasks.json

Kopiuj
{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "build",
            "command": "clang++", 
            "type": "process",
            "args": [
                "-g",
                "-stdlib=libc++", // Używaj libc++ jako biblioteki standardowej
                "-std=c++2c", // Dodaj tę linię, aby ustawić standard na C++23
                "${file}", // Użycie zmiennej dla aktualnie otwartego pliku
                "-o",
                "${workspaceFolder}/${fileBasenameNoExtension}" // Użycie zmiennej dla nazwy wyjściowej
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "problemMatcher": []
        }
    ]
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.