• linux学习记录.6.vscode调试c makefile


    参考

    https://www.cnblogs.com/lidabo/p/5888997.html

     task有更新,不能使用文章的代码。

    多文件

    终端

    touch main.c hw.c hw.h

    vscode hw.c

    Vscode

    打开文件夹

     编写三个项目文件

    1 /*hw.c*/
    2 #include "hw.h"
    3 
    4 void print()
    5 {
    6     printf("Hello World!
    ");
    7 }
    1 /*hw.h*/
    2 #include <stdio.h>
    3 
    4 void print();
    1 /*main.c*/
    2 #include "hw.h"
    3 
    4 int main()
    5 {
    6     print();
    7 
    8     return 0;
    9 }

    此时使用

    在终端直接使用gcc

    gcc main.c hw.c hw.h

    生成 a.out 和 hw.h.gch

    使用make

    在项目目录下建立makefile    touch makefile

    编写makefile文件

    build : main.o hw.o 
        gcc -o build main.o hw.o
    main.o : main.c hw.h
        gcc -g -c main.c
    hw.o : hw.c hw.h
        gcc -g -c hw.c
    clean : 
        rm main.o hw.o 

    PS:clean下的代码需要使用 make clean 才调用

      -g :调试使用

      -c  :仅编译(Compile),不连接 (Make)

       -o :输出文件名

     VS code 调试 配置

    {
        /*launch.json*/
        // 使用 IntelliSense 了解相关属性。 
        // 悬停以查看现有属性的描述。
        // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
        "version": "0.2.0",
        "configurations": [
            { 
                "name": "(gdb) Attach",
                "type": "cppdbg",
                "request": "attach",
                "program": "${workspaceFolder}/build",
                "processId": "${command:pickProcess}",
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ]
            },
            {
                "name": "(gdb) Launch",
                "type": "cppdbg",
                "request": "launch",
                "program": "${workspaceFolder}/build",
                "args": [],
                "stopAtEntry": false,
                "cwd": "${workspaceFolder}",
                "environment": [],
                "externalConsole": true,
                "MIMode": "gdb",
                "setupCommands": [
                    {
                        "description": "Enable pretty-printing for gdb",
                        "text": "-enable-pretty-printing",
                        "ignoreFailures": true
                    }
                ],
                
                "preLaunchTask": "make"    //add
                
            }
    
        ]
    }
    {
        /*task.json*/
        // See https://go.microsoft.com/fwlink/?LinkId=733558
        // for the documentation about the tasks.json format
        "version": "2.0.0",
        "tasks": [
            {
                "label": "make",
                "type": "shell",
                "command": "make",
                "args": []
                
            }
            
        ]
    }

    ctrl + shift + b 编译

    设置断点

    f5 开始调试

    弹出终端 显示输出。

  • 相关阅读:
    oracle 之 while循环月份
    oracle 之 for循环表
    基本类型与字符串之间的转换
    java的数据类型和mysql的数据类型和Oracle数据类型
    EasyPoi导入数据后,导出发生错误的数据报[object Object]
    mysql查询表名是否存在和oracle查询表名是否存在
    mysql服务相关命令
    vue:按钮后面加一个下拉箭头
    js删除对象中的属性使用delete
    为什么在前端存入的日期,到后台却多了8个小时?而且前端显示的又是很丑的时间戳
  • 原文地址:https://www.cnblogs.com/protogenoi/p/9162549.html
Copyright © 2020-2023  润新知