首页 > 系统相关 >嵌入式linux开发板gdbserver+vscode可视化断点调试

嵌入式linux开发板gdbserver+vscode可视化断点调试

时间:2024-11-27 17:13:03浏览次数:5  
标签:gnueabihf vscode gdbserver gdb linux 断点 arm 调试

安卓板子

请移步https://www.cnblogs.com/chenshao107/p/18548660

gdb和gdbserver

一般来说进行,进行嵌入式linux开发时,都会从开发板厂商拿到sdk,里面的工具链就有可用的gdb和gdbserver,所以一般是不需要自己去编译的。常见的比如,如果你用的工具链是arm-linux-gnueabihf-gcc,那你一般能找到arm-linux-gnueabihf-gdb……
可以在对应工具链的目录下find -name gdbserver

找不到的话,顶多也就交叉编译个gdbserver

硬要自己编译gdbserver

https://sourceware.org/gdb/download/
在前者链接里下载你想要的gdb版本,解压后交叉编译gdbserver

export PATH=$PATH:/tools/toolchain/gcc-10.2.1-20210303-sigmastar-glibc-x86_64_arm-linux-gnueabihf/bin
export CROSS_COMPILE=arm-linux-gnueabihf-
export ARCH=arm

./configure --prefix=`pwd`/__install --host=arm-linux \
     CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ \
      LD=arm-linux-gnueabihf-ld AR=arm-linux-gnueabihf-ar

make
make install

这里的命令只是参考,因为我并不需要源码编译,编译过程中有错误需要自己搜索寻找解决办法,同时还要检测gdbserver二进制是否生成,因为你并不需要整个gdb项目交叉编译完,你仅仅只是需要gdbserver可执行文件。

编译需要调试的程序

在编译过程中添加-g -O0即可。(并且不要被strip,一般没啥问题)单纯linux的板子一般问题不多,因为用的都是gnu,如果实在怀疑调试的符号信息有问题的话,查看一下我的这篇博客https://www.cnblogs.com/chenshao107/p/18548660

gdbserver启动服务

板子连上网络,tftp将gdbserver推进板子。

./gdbserver   :1234  demo
或者
./gdbserver :1234 --attach $pid

别忘了给gdbserver和要调试的二进制添加执行权限。chmod +x gdbserver

vscode连接gdbserver

安装ms-vscode.cpptools拓展,名称: C/C++。由于许多人其实更喜欢使用clangd,C/C++插件占用太多,我后续再看能不能使用其他插件。

点击vscode左边的"运行与调试",添加launch.json,选择cppdbg。
参考配置文件如下

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Remote Debug",
            "type": "cppdbg",
            "request": "launch",
            "program": "可执行文件的路径(注意,不是板子上的路径)",
            "miDebuggerServerAddress": "板子ip:1234",
            "miDebuggerPath": "arm-linux-gnueabihf-gdb(选择自己工具链的gdb,绝对路径也行)",
            "args": [],
            "stopAtEntry": true,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ]
        }
    ]
}

vscode提前打开对应的.c文件打打断点,点击“运行与调试”界面左边的小绿三角即可连接上了。

so库的调试

如果要调试代码中调用的so库,so库也要添加-g -O0的编译选项,同时有可能需要手动加载so库的调试符号,比如在调试控制台执行file xx.so?目前我只在安卓使用lldbserver成功过,以后有机会再尝试。

标签:gnueabihf,vscode,gdbserver,gdb,linux,断点,arm,调试
From: https://www.cnblogs.com/chenshao107/p/18572557

相关文章

  • IntelliJ IDEA 断点调试详细文档
    IntelliJIDEA断点调试详细文档本指南全面介绍如何使用IntelliJIDEA的断点调试功能,包括快捷键操作、条件断点设置和表达式值的查看方法,帮助开发者高效调试代码。18.断点调试快捷键常用断点调试快捷键添加/移除断点快捷键:Ctrl+F8(Windows/Linux)/Command+F8(Mac)操......
  • 【VS Code】记一次VSCode Remote SSH无法连接的问题
    试用条件:WIN7、Remote-SSHv0.84.0、被连接:阿里云服务器遇到的问题:Couldnotestablishconnectionto"xxx.xxx.xxx.xxx":XHRfaild博主先参考这篇文章解决连接需要等待很久的问题先在CMD执行code--version'''会得到以下内容:1.70.3a21a160d630530476218b85db95b0fd2a8......
  • vscode如何更改文件语言模式为json格式
    前言大家好,我是小徐啊。vscode是一款常用的开发工具,非常适合前端开发,但同时,它也适合后端开发。比如Java,可以通过安装一些插件的方法,来支持开发Java。而且,它还能帮助我们快速处理一些文本,比如将json形式的文本,格式化,方便查看等。今天,小徐就来介绍下如何用vscode更改文件语言模式为......
  • 【VsCode】SSH设置免密登录
    近来在服务器配置上花了大量时间,配置免密登录是其中一个绕不开的主题,故在此记录1.免密登录在服务器上生成id_rsassh-keygen-mPEM-trsa-m:format,-t:加密算法在~/.ssh下catid_rsa.pub>>authorized_keys将生成的id_rsa下载到本地修改本地ssh的config在对......
  • VsCode 快捷键[转载]
    前言VSCode的快捷键继承了一些IDE风格,有VS的身影,也有Emacs的身影。。简言之,内置快捷键玩熟了,效率提高不是一点两点。VsCode快捷键有五种组合方式(科普)Ctrl+Shift+?:这种常规组合按钮Ctrl+VCtrl+V:同时依赖一个按键的组合Shift+Vc:先组合后单键的输入Ctrl......
  • vscode的C++引用头文件总是报错,网上教程都试了还是没用,请来这里。
    本教程跟网上大部分教程大同小异。(节省时间:在编辑task.json文件时只需写头文件路径,一定不要写源文件路径即可,其余步奏跟其他人的相同)若成功解决问题,希望可以给小编一个赞其中一些操作看不懂的可以先看其他人的步奏,如:适合初学者!超详细的vscode的C++自定义头文件的配置!_vscod......
  • VSCode进阶之路
    VSCode进阶之路:从入门到高效率开发......
  • vscode关闭声音
    解决策略寻找顺序左下角齿轮形状-->setting(设置)-->sounds(声音)-->sounds-->off吐槽真的是很煞笔的设计,不知道脑子是糊了浆糊吗?主要有这么几点:莫名其妙的开启(一直以为电脑出问题了)如果只设置音量为0,一旦重新打开又会复原。居然改不了,这个设置有什么意义吗??????就算不是关闭声......
  • vscode 配置prettier 代码自动格式化
    安装Prettier在项目路径下新建prettier.config.js文件exportdefault{printWidth:100,tabWidth:2,useTabs:false,semi:false,vueIndentScriptAndStyle:true,singleQuote:true,quoteProps:'as-needed',bracketSpacing:true,trailingComm......
  • Ubuntu中VSCode配置CC++环境
    我的环境:Ubuntu22.04.5LTSVSCode版本:1.94.2参考文章:https://blog.csdn.net/zimuzi2019/article/details/106861692https://zhuanlan.zhihu.com/p/147366852一、安装gcc/g++和gdbsudoapt-getupdatesudoapt-getinstallgccsudoapt-getinstallg++sudoa......