广州哪家做网站最好,云南省建设工程造价管理协会网站,wordpress模板带数据,Wordpress全站404在开发ARM嵌入式端C/C程序时#xff0c;一般会在PC上编写代码#xff0c;在Linux服务器上编译#xff0c;然后将程序复制或挂载到ARM开发板上运行。如果程序出了问题#xff0c;在不使用gdb的情况下#xff0c;经常在代码中添加打印#xff0c;编译#xff0c;然后在开发…在开发ARM嵌入式端C/C程序时一般会在PC上编写代码在Linux服务器上编译然后将程序复制或挂载到ARM开发板上运行。如果程序出了问题在不使用gdb的情况下经常在代码中添加打印编译然后在开发板上再次运行查看结果。添加打印、编译麻烦费时不谈想要监视局部变量、断点执行这种方式还不支持。而使用gdb工具时习惯了使用UI界面的人来说基本上很难适应。这里将使用VS Code结合gdb与gdbserver可视化远程调试arm开发板上的linux C/C程序。
当然如果你的应用程序是直接在Linux x86上编译的且非交叉编译那么直接在Linux x86上运行即可无需用gdbserver启动也无需配置点击左栏的debug图标即可编译并进入调试模式。
准备工作
交叉编译好的gdbserver与目标程序test。
使用交叉编译工具链编译要调试的程序需要注意的是去掉编译选项中的-O2或-O1选项某些代码被优化了之后断点无法生效并加上-g选项在生成的可执行程序中包含调试信息。
开始调试
将编译好的gdbserver与生成的被调试程序test复制到目标主机中
进入目标主机运行如下命令。如果程序带有运行参数直接依次写在test后面。
./gdbserver localhost:6767 test端口号可以随意指定后面填写vscode的配置需要用到记录下目标主机的ip地址后面填写配置也要用到。
在打开测试程序源代码工程的VS code窗口中新建一个launch.json配置。如果已经有了launch.json配置则直接打开添加gdb调试配置。 在launch.json中修改program字段填写生成的test文件路径。添加miDebuggerPath字段填写刚刚编译生成的gdb路径。添加miDebuggerServerAddress字段填写目标主机的IP与gdbserver监听的端口号。
 Launch, //名称type: cppdbg,request: launch,program: ${workspaceFolder}/xx/test, // 当前目录下编译后的可执行文件args: [],stopAtEntry: false,cwd: ${workspaceFolder}, //表示当前目录environment: [],externalConsole: false, // 在vscode自带的终端中运行不打开外部终端MIMode: gdb, //用gdb来debug// preLaunchTask: build,setupCommands: [{description: Enable pretty-printing for gdb,text: -enable-pretty-printing,ignoreFailures: true}],miDebuggerServerAddress: 10.2.9.108:6767,miDebuggerPath: /xx/aarch64-linux-gnu-gdb}]
}可以添加preLaunchTask在启动调试前启动其他前置task例如完成编译。嵌入式的编译往往是多样的需要自己定义编译taskvscode的默认编译行为可能无法满足。 在文件中打上断点监视窗口中添加想要监视的变量值点击运行按钮即可开始调试过程。