通过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

通过vscode进行嵌入式linux arm开发板gdb调试_第1张图片

     2.2 安装 c/c++

通过vscode进行嵌入式linux arm开发板gdb调试_第2张图片

 2.3 安装 gdb debug   通过vscode进行嵌入式linux arm开发板gdb调试_第3张图片

 

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

#include 
#include 
#include 
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 [email protected]

通过vscode进行嵌入式linux arm开发板gdb调试_第4张图片

4.2 选择  ssh configuration file

通过vscode进行嵌入式linux arm开发板gdb调试_第5张图片 

4.3 选择 connect

通过vscode进行嵌入式linux arm开发板gdb调试_第6张图片

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

通过vscode进行嵌入式linux arm开发板gdb调试_第7张图片

4.5 输入密码然后按 "Enter"

通过vscode进行嵌入式linux arm开发板gdb调试_第8张图片

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

通过vscode进行嵌入式linux arm开发板gdb调试_第9张图片

 4.7 打开测试代码目录

通过vscode进行嵌入式linux arm开发板gdb调试_第10张图片

4.8 再次输入 ssh 密码

通过vscode进行嵌入式linux arm开发板gdb调试_第11张图片

 4.9 这时我们能看到源代码

通过vscode进行嵌入式linux arm开发板gdb调试_第12张图片

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

通过vscode进行嵌入式linux arm开发板gdb调试_第13张图片

 4.11 新的 lauch.json 如下

通过vscode进行嵌入式linux arm开发板gdb调试_第14张图片

用以下配置内容替换 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" 是需要根据实际修改的。 通过vscode进行嵌入式linux arm开发板gdb调试_第15张图片

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

# ./gdbserver :9001 arm_test

通过vscode进行嵌入式linux arm开发板gdb调试_第16张图片

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

通过vscode进行嵌入式linux arm开发板gdb调试_第17张图片

 4.14 成功,最终运行结果

通过vscode进行嵌入式linux arm开发板gdb调试_第18张图片

 

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

通过vscode进行嵌入式linux arm开发板gdb调试_第19张图片

 

 

 

 

 

 

你可能感兴趣的:(arm开发,vscode,ide)