VS код отладки консольного ввода - PullRequest
4 голосов
/ 17 апреля 2020

Я пытаюсь отладить следующую программу C ++ с кодом VS на MacOS. Это требует ввода от пользователя. Это просто то, что принимает два числа в качестве входных данных и возвращает список чисел в качестве выходных данных. Это мой запуск. 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": "(lldb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/hello",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": true,
"MIMode": "lldb"
}
]
}

Когда я нажимаю клавишу F5, окно внешнего терминала действительно запущено, но оно не выполняет выходной файл "привет", оно просто показывает обычное приглашение на моя домашняя папка ~. Если я просто запускаю файл нормально, все работает как обычно. Я опубликую точный код, который я пытаюсь отладить, в качестве примера, поскольку он достаточно прост.


#include <iostream>
using namespace std;

class Calculator
{
private:
    /* data */
public:
    Calculator(/* args */) {}
    ~Calculator() {}
    void PrimeGenerator(int, int);
};


int main(int argc, char *argv[])
{
    cout << "Please enter two numbers: " << endl;
    int x, y;
    cin >> x >> y;
    Calculator c;
    c.PrimeGenerator(x,y);

    cin.ignore();
    cin.get();

    return 0;
}

void Calculator::PrimeGenerator(int x, int y)
{
    for (int i = x; i < y; i++)
    {
        bool prime = true;
        for (int j = 2; j * j <= i; j++)
        {
            if (i % j != 0)
            {
                prime = false;
                break;
            }
        }

        if (prime==true) {
            cout << i << " ";
        }
    }
}

1 Ответ

5 голосов
/ 20 апреля 2020

Кажется, нет проблем с самим кодом.

У вас есть жесткие требования к внешней консоли? Если нет, можете запустить приложение вручную в терминале и затем присоединить:

{
    "name": "(lldb) Attach",
    "type": "cppdbg",
    "request": "attach",
    "program": "${workspaceFolder}/hello",
    "processId": "${command:pickProcess}",
    "MIMode": "lldb",
    "setupCommands": [
        {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
        }
    ]
}

После того, как вы нажмете кнопку запуска, VSCode запросит у вас pid: enter image description here

Теперь можно будет отлаживать: enter image description here

...