Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/visual-studio-code/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何调试&x27;外部';在c语言中使用vscode_C_Visual Studio Code_Vscode Code Runner - Fatal编程技术网

如何调试&x27;外部';在c语言中使用vscode

如何调试&x27;外部';在c语言中使用vscode,c,visual-studio-code,vscode-code-runner,C,Visual Studio Code,Vscode Code Runner,我不熟悉c编译器,我知道如何在终端中使用gcc或g++ 我有 main.c #包括 整数计数; extern void write_extern(); int main() { 计数=5; 写入外部代码(); } 支持.c #包括 外部内部计数; 无效写入外部(无效) { printf(“计数为%d\n”,计数); } gcc main.c support.c 输出文件a.out工作正常 但是如果我使用vscode或CodeRunner插件进行调试 错误显示 /“主要的 架构x86_64的未

我不熟悉c编译器,我知道如何在终端中使用gcc或g++

我有

main.c

#包括
整数计数;
extern void write_extern();
int main()
{
计数=5;
写入外部代码();
}
支持.c

#包括
外部内部计数;
无效写入外部(无效)
{
printf(“计数为%d\n”,计数);
}
gcc main.c support.c

输出文件a.out工作正常

但是如果我使用vscode或CodeRunner插件进行调试 错误显示

/“主要的 架构x86_64的未定义符号: “\u write\u extern”,引用自: _main-217186.o中的main ld:找不到架构x86_64的符号 叮当声:错误:链接器命令失败,退出代码为1(使用-v查看调用)

我的launch.json和task.json如下所示:

“配置”:[
{
“名称”:“生成并调试活动文件”,
“类型”:“cppdbg”,
“请求”:“启动”,
“程序”:“${fileDirname}/${fileBasenameNoExtension}”,
“args”:[],
“stopAtEntry”:false,
“cwd”:“${workspaceFolder}”,
“环境”:[],
“外部控制台”:false,
“MIMode”:“lldb”,
“预启动任务”:“生成活动文件”
}
]
{
“任务”:[
{
“类型”:“外壳”,
“标签”:“铿锵构建活动文件”,
“命令”:“/usr/bin/clang”,
“args”:[
“-g”,
“${file}”,
“-o”,
“${fileDirname}/${fileBasenameNoExtension}”
],
“选择”:{
“cwd”:“/usr/bin”
}
}
],
“版本”:“2.0.0”
}

如何配置此任务?

默认情况下,此任务仅编译当前打开的文件,因此您需要更改启动前任务以编译所需的所有内容。您可以为此创建自定义任务,如下所示:

{
"tasks": [
    {
        "type": "shell",
        "label": "clang build active file",
        "command": "/usr/bin/clang",
        "args": [
            "-g",
            "${file}",
            "-o",
            "${fileDirname}/${fileBasenameNoExtension}"
        ],
        "options": {
            "cwd": "/usr/bin"
        }
    },
    {
        "type": "shell",
        "label": "clang build custom",
        "command": "/usr/bin/clang",
        "args": [
            "-g",
            "${fileDirname}/main.c",
            "${fileDirname}/support.c",
            "-o",
            "${fileDirname}/main"
        ],
        "options": {
            "cwd": "/usr/bin"
        },
        "problemMatcher": [
            "$gcc"
        ],
        "group": "build"
    }
],
"version": "2.0.0"
}
然后更新launch.json以使用新任务:

 "configurations": [
    {
        "name": "clang build and debug custom project",
        "type": "cppdbg",
        "request": "launch",
        "program": "${fileDirname}/${fileBasenameNoExtension}",
        "args": [],
        "stopAtEntry": false,
        "cwd": "${workspaceFolder}",
        "environment": [],
        "externalConsole": false,
        "MIMode": "lldb",
        "preLaunchTask": "clang build custom"
    }
]

VSCode似乎只编译1个文件,这显然是不够的,因为您有2个文件。也许这有帮助:谢谢,明白了。关于如何使用config code runner插件来实现这一点,有什么提示吗?您需要更新c的code runner的package.json文件中的code-runner.executorMap。c的config通常看起来像“cd$dir&&gcc$fileName-o$fileNameWithoutExt&$dir$fileNameWithoutExt”,您需要将其更新为类似“cd$dir&&gcc*.c-o$fileNameWithoutExt&&$dir$fileNameWithoutExt”的内容才能使其正常工作。这是一个非常好的线程