Setting up VS Code for C using Cygwin64 Compiler and Debugger on Windows (ERROR: Unable to start debugging)

Setting up VS Code for C using Cygwin64 Compiler and Debugger on Windows (ERROR: Unable to start debugging)

我正在尝试设置 VSCODE 以使用 Cygwin64 调试 Windows 上的 C 程序。

我使用了 @stephw ( ) 建议的配置,但它对我不起作用。

我无法评论原post,因为我没有足够的声誉点数,我无法回答,因为我不知道原问题的答案。

脚本的名字是dirigir.c,我可以编译。文件 dirigir.exe 已创建。但是...

我收到以下错误:

错误:无法开始调试。命令“-exec-运行”的意外 GDB 输出。创建进程时出错 /usr/bin/E:\cloud\Backup\Trabalhos com programas\C and Cpp\scripts/e:\cloud\Backup\Trabalhos com programas\C and Cpp\scripts\dirigir.exe, (错误 2).

由于某种原因,/usr/bin/... / 被插入到路径中,并且指向 . exe 重复.

我的 launch.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": "gcc.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [
                {
                    "name": "PATH",
                    "value": "%PATH%;z:\cygwin64\bin"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\cygwin64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": { "engineLogging": true }, //optional
            "preLaunchTask": "gcc.exe build active file"
        }
    ]
}

而我的tasks.json如下:

{
    // See https://go.microsoft.com/fwlink/?LinkId=733558
    // for the documentation about the tasks.json format
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "gcc.exe build active file",
            "command": "C:\cygwin64\bin\gcc.exe",
            "args": [
                "-g",
                "-o",
                "${fileDirname}\${fileBasenameNoExtension}.exe",
                "-Werror", // Optional
                "-Wall", // Optional
                "-Wextra", // Optional
                "-ansi", // Optional
                "-pedantic", // Optional
                "${file}"
            ],
            "options": {
                "cwd": "C:\cygwin64\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            }
        },
    ]
}

您知道如何进行吗?提前谢谢你。

终于,我成功了。

基于 WardenGnaw 在此线程中的回答: [cppdbg] Cygwin 10.1-1: intergatedTerminal unable to take input #6475 当然还有@stephw 在原始问题中的回答,我可以调试我的 C 程序。

首先,我在我的 c 程序所在的同一文件夹 中保存了一个 VSCODE 工作区。

然后,我使用了最新的Cygwin gdb版本(10.2-1)。没有用(我收到了提出这个问题的错误消息)。然后,我尝试了 9.2-1,现在可以正常工作了。

重要的是要记住 将“C:\cygwin64\bin”添加到 PATH。

我稍微改变了我的 launch.json。请注意 "preLaunchTask" 键的值与 tasks.json 中的 "label" 键的值不完全相同:

{
    // 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": "gcc.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [
                {
                    "name": "PATH",
                    "value": "%PATH%;C:\cygwin64\bin"
                }
            ],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\cygwin64\bin\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "logging": { "engineLogging": true }, //optional
            "preLaunchTask": "gcc.exe build active file"
        }
    ]
}

我的tasks.json是这样的(注意最后我的名字,在“detail”键):

{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "cppbuild",
            "label": "C/C++: gcc.exe build active file",
            "command": "C:\cygwin64\bin\gcc.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "${fileDirname}"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build",
            "detail": "Task generated by Leonardo."
        }
    ]
}

我注意到有些奇怪: 当我按F5时,它不起作用,因为找不到创建的任务。

当我将 launch.json 文件(preLaunchTask 键)编辑为 tasks.json 文件中完全相同的值时,“未找到”错误消失,但调试过程没有启动。

"preLaunchTask": "C/C++: gcc.exe build active file"

如果我按下 运行 和调试播放按钮,调试过程也不起作用。

当我使用命令面板(按 CTRL+SHIFT+P)并单击 C/C++: Build and Debug Active File

然后选择我创建的任务(第二个好像是自动的),

程序编译完成,调试过程开始。

这是我非常简单的测试脚本:

#include <stdio.h>
#include <stdlib.h>

int main() {

    /* declare and initialize string */
    char myString[] = "This is an example of string declaration!";

    /* print string */
    printf("%s", myString);

    int numberA = 5;
    int numberB = 10;

    int sum = numberA + numberB;

    /* Printing a number */
    printf("A soma de numberA + numberB é: %d", sum);

    return 0;
}

我希望这个问题和答案能对以后的人有所帮助。和平

此处描述的

None 的 .json 更改适用于 gdb 10.2-1。唯一有用的是降级到 gdb 9.2-1,这立即解决了问题。