通过vscode进行嵌入式linux arm开发板gdb调试

  1. 下载和安装vscode, 下载 vscode for windows 地址:  Visual Studio Code - Code Editing. Redefined
  2. 安装 "remote-ssh", "c/c++" 和"gdb debug" ,用于对windows 与linux服务器进行ssh连接和进行gdb调

     2.1 安装remote-ssh

     2.2 安装 c/c++

 2.3 安装 gdb debug   

 

3. 在linux服务器上创建调试程序

#include <unistd.h>
#include <pwd.h>
#include <iostream>
int main()
{
    struct passwd* pwd;
    uid_t userid;
    userid = getuid();
    pwd = getpwuid(userid);
    std::cout << "pw_name:" << pwd->pw_name << std::endl;
    std::cout << "pw_passwd:" << pwd->pw_passwd << std::endl;
    std::cout << "pw_uid:" << pwd->pw_uid << std::endl;
    std::cout << "pw_gid:" << pwd->pw_gid << std::endl;
    std::cout << "pw_gecos:" << pwd->pw_gecos << std::endl;
    std::cout << "pw_dir:" << pwd->pw_dir << std::endl;
    std::cout << "pw_shell:" << pwd->pw_shell << std::endl;
    return 0;
}

使用目标ARM板子相对应的交叉编译工具链进行编译,参考如下命令:

user@ubuntu:~/vscode_gdb$ pwd
/home/user/vscode_gdb
user@ubuntu:~/vscode_gdb$ g++ -g main.cpp -o arm_test

 4. 通过 remote-ssh 连接windows 与linux 服务器

4.1 添加ssh target, 输入linux 服务器 ssh 用户名:  ssh user@192.168.81.128

4.2 选择  ssh configuration file

 

4.3 选择 connect

 4.4 选择要连接的PC, 右击 Connect to Host in Current Window

4.5 输入密码然后按 "Enter"

4.6 这时我们成功登陆linux服务器

 4.7 打开测试代码目录

4.8 再次输入 ssh 密码

 4.9 这时我们能看到源代码

 4.10 创建配置文件 lauch.json 然后运行调试

 4.11 新的 lauch.json 如下

用以下配置内容替换 lauch.json

{
    // Use IntelliSense to learn about possible attributes.
    // Hover to view descriptions of existing attributes.
    // For more information, visit: Debugging in Visual Studio Code
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动", //配置名称,显示在配置下拉菜单中
            "type": "cppdbg", //配置类型
            "request": "launch", //请求配置类型,可以是启动或者是附加
            "program": "/home/user/vscode_gdb/arm_test", // linux上程序可执行文件的完整路径         
            "args": [], //传递给程序的命令行参数
            "stopAtEntry": false,//可选参数,如果为true,调试程序应该在入口(main)处停止
            "cwd": "${workspaceFolder}", //目标的工作目录
            "environment": [], //表示要预设的环境变量
            "externalConsole": false,//如果为true,则为调试对象启动控制台
            "MIMode": "gdb",//要连接到的控制台启动程序
            "setupCommands": [ //为了安装基础调试程序而执行的一个或多个GDB/LLDB命令
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/opt/***/arm-oe-linux-gnueabi-gdb", // linux上适合目标板的arm格式

// gdb程序路径,作为与目标板gdbserver通信的gdb client运行于linux服务器上
            "miDebuggerServerAddress": "192.168.225.1:9001"  //目标板上gdbserver监听的IP地址和 // 端口号      
        }
    ]
}

其中 "program", "miDebuggerPath" 和 "miDebuggerServerAddress" 是需要根据实际修改的。 

4.12 把嵌入式arm板子上运行的 gdbserver 上传到板子上,运行测试程序。

# ./gdbserver :9001 arm_test

4.13 设置断点然后运行gdb调试

 4.14 成功,最终运行结果

 

5.  通过vscode进行嵌入式linux arm开发板gdb调试系统架构图

 

 

 

 

 

 

  • 11
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值