栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

LinuxCNC远程调试

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LinuxCNC远程调试

Linux 环境下一般使用 GDB 进行调试,但是在调试大型程序时不太方便,比如线程来回切换、查看堆栈等,不是那么直观。使用 VC++ 进行远程调试,有 GUI 界面,比较方便直观查看线程切换、堆栈、函数参数值等等。下面介绍如何使用 VC++ 远程调试 Linux 程序。

环境准备

Linux 系统上要安装 GDB 和 gcc/g++ 之类的,以便能够编译 C/C++ 代码。

注意:编译程序时需加上 -g 选项,否则无法命中断点。

远程调试

说明一下,VC++ 要能远程调试 Linux 程序,需要的 VC++ 版本会比较高,比如 Visual Studio 2017/2019 等,但是版本不限,专业版、社区版都可以。

  1. 在 Linux 上启动程序,如下图所示

  1. 从 VS 的【附加到进程】选项向导中选择连接类型为 SSH,并输入 Linux 系统的 IP 地址

然后回车,输入用户名和密码,并执行连接,如下图所示

注意:建议使用 root 用户连接调试,避免因为权限不足导致无法访问部分共享库。

  1. 设置调试类型为 Native(GDB),如下图所示

  1. 从可用进程列表中选择要调试的进程名称并附加,VS 即进入调试状态;将 Linux 程序对应的源码在 VS 中打开,并设置断点,然后就可以开始调试了,如下图所示

当程序运行到断点处就会中断下来,等待用户下一步操作。

问题排查 连接类型没有 SSH

如果在【附加到进程】选项向导的连接类型中没有 SSH 选项,则可能没有安装调试 Linux 应用程序的运行环境,打开 Visual Studio 安装程序,勾选如下图所示的工具集,并执行安装

无法访问远程服务

如果输入 Linux 系统的 IP 地址后,没有跳出【连接到远程系统】向导,那么在【工具】视图下打开【选项】向导,在【跨平台】选项页中添加连接,如果提示如下图所示

那么该问题是 Visual Studio 产品的一个 Bug:https://developercommunity.visualstudio.com/t/Connection-Manager-Error-The-remote-ser/1499473,可以使用 Visual Studio 的其它版本来解决该问题。

连接远程系统超时

如果在用 SSH 远程连接 Linux 系统时提示连接超时,如下图所示

在确保两台机器的 IP 地址正常(能够 ping 通),并且端口没有被防火墙阻止后,可能的原因是在登录时,SSH 服务端会对客户端的 IP 做反向解析,此时连接不到 DNS 就出现了延时。解决办法是,打开 /etc/ssh/sshd_config,修改(如果没有就新增一行)

UseDNS no
无法连接到GDB

在附加进程启动调试时,如果提示无法连接到 GDB,如下图所示

此时检查 Linux 主机是否安装 GDB,执行如下命令进行安装

$ sudo apt-get install gdb
无法命中断点

进入调试状态后,如果无法命中断点,则可能的原因如下

  • Linux 程序使用 gcc/g++ 编译/链接时,没有使用 -g 选项。
  • 断点所在的源码文件不属于当前附加的进程,其被编译到其它进程中。
  • 远程连接时的用户权限不足,无法访问指定文件。
  • 代码在实时内核中运行(该部分暂未找到解决办法)。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/310907.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号