- A+
0.吐槽
由于用惯了win上面的VS,linux的vim和gdb实在感觉不快乐,于是打算VS远程调试去连接openwrt(树莓派4B)。
不知道是openwrt还是我的问题,遇到的问题相比装debian时多了很多,这里列举一些主要的问题。
不过也算是学到了挺多东西吧,把坑都踩一遍能强一点吧,自我安慰ing......
1.问题汇总
1-1.Q:***主机上的缺少工具:gcc,gdb,gdbsevice,zip?
A:就是你的linux里没有安装上述程序,得去安装。
问题主要在zip这个程序,在openwrt的web管理里搜索后居然没有zip程序,最后我是去到中科大软件源里
http://mirrors.ustc.edu.cn/openwrt/releases/18.06.6/packages/aarch64_cortex-a72/packages/
手动找到zip.ipk然后上传到openwrt里的 /tmp目录安装的(opkg install /tmp/zip.ipk)。
如果你也遇到此问题,需要到链接里回退找对应的openwrt版本(18.06.6)和对应的cpu类型(aarch64_cortex-a72)的zip.ipk包。
本来是把这个连接放到openwrt的自定义软件源里,但在web里搜索还是没有zip包,就像被过滤了一样暂不知道原因。
1-2.Q:VS里满屏的报错?头文件全都提示无法找到源文件?
A:百度上很多方法试过后对我没用,在目录里
C:Program Files (x86)Microsoft Visual Studio2019CommunityCommon7IDEVCLinuxinclude
是有linux的各种头文件的,但Vs就是报错了,最后发现是Vs并没有真正复制树莓派的头文件到win里
上面目录里的文件似乎是下载Vs时带的。
解决方法:在 调试 -> 选项 -> 跨平台 -> 链接管理器 -> 远程标头IntelliSense
此时窗口右方第三个按钮 " 浏览 "
就会进入文件管理里,此时如果你点进usr里会发现里面是没有头文件的,这就是VS满屏波浪线的原因。
因此我们只要把linux里的头文件(usr/include以及usr/local/include)的头文件复制进usr就可以了,lib文件同理。
后面的目录可能不存在,我的openwrt就没有,没有关系的。
复制进去后重新打开VS项目就可以了。
1-3.Q:运行就VS卡死,打断点也卡死?
VS报错:引发类型"Microsoft.Build.Linux.Shared.ExceptionTTY"的异常
A:这个问题在百度上有人提到是终端有VS无法识别的符号引发了错误。
但他的解决方法我不适用:把linux的用户目录里的隐藏文件.bashrc直接删除。
我的默认sh是zsh,把.zshrc删了并不能解决问题,并且出现更多问题了。而且删这个感觉好危险......
最后我的解决方法:
在 调试 -> **调试属性(最后一个选项,例如我的项目名是Project1,则为 Project1调试属性)
在左边点 配置属性 -> 调试
此时右边里面的调试模式改为 gdbservic 试试看,如果你默认是 gdbservice 就改为 gdb 试试。