使用VSCode调试ARM Linux程序

在很多情况下,需要对应用程序进行调试。在 Linux 下调试程序,常用的工具是 gdb。 由于嵌入式单板的资源有限,一般不直接在目标机上运行 gdb 进行调试,而是采取 gdb+gdbserver 的方式。gdbserver 在目标机中运行,gdb 则在宿主机上运行,这样来达到调试程序的目的,前提是目标板需要和主机连通网络。

第一步是在目标板安装gdbserver服务,如果已经有了,可以跳过。

解压下载好的gdb包,进入,然后在/gdb/gdbserver里打开终端,输入
./configure –target=arm-hisiv200-linux –host=arm-hisiv200-linux
不同的arm有不同的交叉编译器,我使用的是海思芯片,所以写海思的交叉编译器的前缀,你用的什么交叉编译器就写什么前缀

然后
make CC=/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gcc
这里CC后面跟的是你交叉编译器的路径,不知道在哪里的,可以在终端使用
type arm-hisiv200-linux-gcc 查看路径

然后在目标板上使用下面这条命令

gdbserver :2000 hello [param] &
2000表示gdb用访问目标板的2000端口调试程序
hello表示你要调试的程序名
[param]如果要带参数,写在这里,如果不用带参数,就不用写这条

如果一切正确,应该显示

#gdbserver :2000 hello &
#Process hello created; pid = 126
#Listening on port 2000

这时候目标板这边就准备好了,只需要配置vscode这边就行了。

 

打开vscode的调试配置json,参考我的修改一下

使用VSCode调试ARM Linux程序

 

 

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
        {
            "name": "(gdb) 启动",
            "type": "cppdbg",
            "request": "launch",
            "program": "/home/nfs/testApp",    // 这个写在主机这边的程序位置
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "为 gdb 启用整齐打印",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "miDebuggerPath": "/opt/hisi-linux/x86-arm/arm-hisiv200-linux/target/bin/arm-hisiv200-linux-gdb",    // 这个是交叉编译器的路径
            "miDebuggerServerAddress": "172.16.0.203:2000",    // 这个是目标板的IP地址
        }
    ]
}

然后按左上角的小箭头,就可以开始调试目标板上的程序啦,调试方式和电脑上一样

使用VSCode调试ARM Linux程序

 

 使用VSCode调试ARM Linux程序

 

上一篇:周总结(四)


下一篇:实现LazyManInit('Tony').eat('rice').sleep(1000).sleepFirst(2000)