VS Code не останавливается ни на каких точках останова на Mac - PullRequest
2 голосов
/ 21 октября 2019

Я пытаюсь протестировать отладчик в VS Code и считаю, что правильно настроил файлы launch.json и tasks.json, но отладчик просто не останавливается на моих точках останова.

Я попытался переустановитьVS код, переконфигурирование, пробование разных исходных файлов ... но я просто не могу запустить этот отладчик. Я новичок, поэтому, скорее всего, мне чего-то не хватает.

enter image description here

Я ожидаю, что отладчик остановится на строке 8.

writassignment.cpp

#include <iostream>

using namespace std;

int main(int argc, char ** argv){
    int array [9] = {-10, -7, -1, 0, 4, 7, 8, 12, 19};
    int i, j, sum = 4;
    for (i = 0; i <= 8; i++){
        for (j = i + 1; j <= 8; j++){
                int a = array[i];
                int b = array[j];
                cout << "a: " << a << " b: " << b << " i: " << i << " j: " << j << endl;
            if (a + b == sum) {
                cout << a << " + " << b << " = " << sum << endl;
                //exit;
            }   
        }
    }
    return -1;
}

tasks.json

    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++ build active file",
            "command": "/usr/bin/g++",
            "args": [
                "-g",
                "${file}",
                "-o",
                "${fileDirname}/${fileBasenameNoExtension}"
            ],
            "options": {
                "cwd": "/usr/bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        }
    ]
}

launch.json

    "version": "0.2.0",
    "configurations": [
        {
            "name": "(lldb) Launch",
            "type": "cppdbg",
            "request": "launch",
            "program": "${workspaceFolder}/writtenassignment",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "lldb"
        }
    ]
}

Ответы [ 2 ]

2 голосов
/ 22 октября 2019

Я обнаружил, что эта проблема связана либо с недавним обновлением XCode, либо с обновлением XCode и Catalina macOS.

Я скачал Xcode версии 10.3, добавил miDebuggerPath в launch.json, и теперьМой отладчик останавливается на точках останова, как и ожидалось.

Подробнее см. https://github.com/microsoft/vscode-cpptools/issues/3829.

launch.json

{
    "name": "run-writtenassignment",
    "type": "cppdbg",
    "request": "launch",
    "preLaunchTask": "build-writtenassignment",
    "program": "${workspaceFolder}/writtenassignment",
    "args": [],
    "stopAtEntry": true,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "lldb",
    "miDebuggerPath": "/Applications/Xcode.app/Contents/Developer/usr/bin/lldb-mi" // <-------------- ADDED!
}
2 голосов
/ 21 октября 2019

AFAIK, единственные моменты, когда точки останова не работают или не запускаются, это если вы не добавили флаг компилятора -g при сборке исполняемого файла.

Я заметил из вашего launch.json , который вы не называете задачей сборки, установленной в task.json . Обычно в конфигурации запуска вы указываете preLaunchTask, который вызывает задачу сборки из task.json , чтобы перестроить исполняемый файл перед его запуском.

То, что, как мне кажется, произошло, заключалось в том, что записанное назначение уже было скомпилировано до без -g, а затем, когда вы запускаете его снова, оно не восстанавливается с помощью -g.

Попробуйте с этим:

tasks.json

{
    "type": "shell",
    "label": "build-writtenassignment",
    "command": "/usr/bin/g++",
    "args": [
        "-g",
        "${workspaceFolder}/writtenassignment.cpp",
        "-o",
        "${workspaceFolder}/writtenassignment"
    ],
    "options": {
        "cwd": "/usr/bin"
    },
    "problemMatcher": [
        "$gcc"
    ],
    "group": {
        "kind": "build",
        "isDefault": true
    }
}

launch.json

{
    "name": "run-writtenassignment",
    "type": "cppdbg",
    "request": "launch",
    "preLaunchTask": "build-writtenassignment",  // <-------------- ADDED!
    "program": "${workspaceFolder}/writtenassignment",
    "args": [],
    "stopAtEntry": true,
    "cwd": "${workspaceFolder}",
    "environment": [],
    "externalConsole": false,
    "MIMode": "lldb"
}

Я добавил preLaunchTask ввызовите задачу сборки в tasks.json (я переименовал каждую конфигурацию, чтобы было легче ссылаться). Я также явно указал файл writingassignment.cpp и вывод writingassignment вместо ${file}. Затем просто запустите его с панели «Отладка».

enter image description here

...