VSCode 远程调试C++程序打开/dev/tty设备失败的问题记录

本文讲述了作者在使用VSCode调试rtklib中的rtkrcv程序时遇到的/dev/tty打开失败问题,由于程序运行在无终端的VSCode远程环境中,导致该错误。目前尚无VSCode内的解决方案,建议考虑更换其他调试工具。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

因为需要协助同事调试rtklib中的rtkrcv程序,一直调试程序都是用了vscode,这次也不例外,但是在调试过程中,发现程序在打开当前终端(/dev/tty)的时候,总是打开失败,返回的错误原因是“No such device or address”,后面网上搜索了下,在VS code 的issue里面,发现相关问题,用来记录

系统环境

CentOS 7
VS Code 1.87.2

VS Code插件

C/C++ v1.19.8
C/C++ Extension Pack v1.3.0

根源

vscode远程调试的C++程序是运行在没有终端的环境下,但是程序内部又访问/dev/tty(当前运行程序的终端),从而导致打开/dev/tty失败

解决方案

针对VSCode,暂无,但是可以通过更换调试工具规避

参考链接

Failed to open /dev/tty with vscode debugger

### 解决ROS中ar_track_landing节点无法启动及串口设备文件不存在的问题 #### 1. ar_track_landing节点无法启动问题分析与解决方法 当尝试运行`ar_track_landing`节点时,如果收到如下错误信息: ``` FATAL] [timestamp]: FCU: DeviceError:serial:open: No such file or directory ``` 这表明系统未能找到指定的串口设备文件`ttyTHS1`。以下是可能导致此问题的原因及其对应的解决方案: - **原因一:设备未正确连接或未被操作系统识别** 可能是硬件本身存在问题或是驱动程序未安装成功。通过以下命令检查是否有可用的串口设备: ```bash ls /dev/tty* ``` 如果发现缺少预期的目标设备(如 `/dev/ttyTHS1`),则需要重新插拔硬件或将设备更换到其他端口测试[^2]。 - **原因二:权限不足** 即使设备存在,但如果当前用户没有足够的权限去操作它也会触发类似的报错。可以给予相应的设备读写权限来规避这个问题: ```bash sudo chmod 666 /dev/ttyTHS1 ``` - **原因三:配置参数不匹配** 在启动过程中传入给飞行控制器单元(FCU)的相关参数可能不符合实际情况,特别是涉及通讯速率(baud rate)的部分。应当仔细查阅官方文档并按照推荐的标准修改这些值直到它们完全适应现有的硬件环境为止[^3]。 #### 2. 相机校准文件缺失问题分析与解决办法 关于相机校准文件丢失(`Camera calibration file not found`)的现象,具体表现为日志中有这样的警告信息: ``` WARN] [timestamp]: Camera calibration file /home/ka/.ros/camera_info/head_camera.yaml not found. ``` 这意味着期望用于图像处理前预处理工作的特定校准数据集并未按既定路径准备好。下面列举了几种常见的处置策略: - **方案A:重新创建准确无误的新版标定材料** 运用专门设计好的工具再次执行详尽细致的数据采集流程之后生成最新鲜出炉的一套完整的YAML格式描述档,并妥善安放回默认查询区域也就是用户的家目录下的隐藏子文件夹`.ros/camera_info/`之中[^4]: - **方案B:调整既有记录里的名字映射关系** 假设原本就存有质量合格的数值组合仅仅是因为标识符之间的矛盾才造成误解的话那么只需简单改动原有的YAML档案内部声明的名字条目即可实现无缝衔接的效果例如把原先标注成`narrow_stereo`的内容改成现在的`head_camera`就能满足需求了[^5]: ```yaml camera_name: head_camera ``` - **方案C:动态指定外部来源作为补充途径** 对于那些不愿意轻易变动整体布局架构却又渴望即时化解困境的朋友来说还可以考虑借助XML配置语法显式地告知应用程序应该去哪里寻找确切可信的信息源就像这样明确指出通往定制化保管场所的确切道路那样提供一份可靠的指引手册[^6]: ```xml <node pkg="..." type="..."> <param name="camera_info_url" value="file:///path/to/custom_head_camera.yaml"/> </node> ``` ```python import os if os.path.exists('/home/user/.ros/camera_info/head_camera.yaml'): print("Calibration File Exists.") else: print("Calibration File Missing.") ``` ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜晓码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值