Программа не работает должным образом при выполнении через отладчик VScode, но работает при выполнении через терминал - PullRequest
0 голосов
/ 21 апреля 2020

Я следовал руководству по созданию игры на C ++ с SDL2. В начале урока показано, как нарисовать текстуру на экране и заставить ее двигаться. Он отлично работает, когда я запускаю файл с ./Game на терминале, окно открывается, текстура выводится на экран, и она перемещается. Однако, если я выполняю файл с помощью отладчика (F5), все работает нормально, за исключением того, что текстура не отображается на экране. Ошибки не появляются.

Вот задачи. json Я сделал для проекта:

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

А вот и запуск. json Я сделал:

"version": "0.2.0",
"configurations": [
    {
        "name": "myLaunch",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "gdb",
        "setupCommands": [
            {
                "description": "Habilitar a reformatação automática para gdb",
                "text": "-enable-pretty-printing",
                "ignoreFailures": true
            }
        ],
        "preLaunchTask": "myTask",
        "miDebuggerPath": "/usr/bin/gdb"
    }
]
}

Если я нажму F5, отладчик скомпилирует программу и создаст исполняемый файл Game, который он продолжит выполнять просто отлично: откроется окно, сработает рендерер и т. Д. c. Однако текстура, которую я закодировал быть нарисованным и перемещенным на экране не появляется. Но если я вручную выполню ./Game на терминале, все будет нормально.

...