当前位置: 首页 > news >正文

QC -io 服务器排查报错方式/报错: Failed to convert string to integer of varId variable!“

进断点控制台有报错之后,复制报错信息到 头部菜单栏

1.编辑 -> 2.Find/Replace  ->3.Advanced Find ->4. Project“xxxxx” 能找到问题点

再分析定位


在排查报错时候,进入了这个报错,msgInfo = "MyTcpRedis: Failed to convert string to integer of varId variable!"

C++ 代码:

//依据设备io地址从redis中查找变量
bool MyTcpRedis::searchVariabeByIoAddr(const QString& ip, quint16 ioAddr, quint32 *varId)
{bool ok;quint16 t;QString sid;QString msgInfo;if ((m_redis) && (m_redis->isConnected())) {//依据varID读取ip和ioAddr,io_addr_var_id(string)sid = devIoAddrToVarIdTbl + ":" + ip + ":" + QString::number(ioAddr);t = m_redis->get(sid).toUInt(&ok);if (!ok) {msgInfo = "MyTcpRedis: Failed to convert string to integer of varId variable!";MyDebug::print(msgInfo);return false;}*varId = t;return true;}return false;
}  

当出现 "Failed to convert string to integer" 这个错误时,意味着从 Redis 读取回来的字符串无法成功转换为无符号整数。主要原因如下:

  1. 键值不存在:在 Redis 里,对应的键可能并不存在,此时获取到的就是空字符串。
  2. 数据格式有误:键对应的值也许不是合法的整数字符串,像包含了字母、特殊符号等情况。
  3. 数值范围不匹配:就算字符串是合法的整数,但如果超出了quint16(也就是 0 - 65535)的范围,也会导致转换失败。

核实 Redis 中的数据情况

redis-cli get "io_addr_var_id:设备IP:IO地址"

  • 若返回 (nil):这表明键不存在,你就得检查键的格式或者数据是否成功写入。
  • 若返回非整数字符串:例如 "abc"、"123.45",那就要修正数据写入的逻辑。
  • 若返回的整数值超出范围:比如大于 65535,就需要把存储类型改成quint32

相关文章:

  • Nginx反向代理解决跨域问题详解
  • 进程间通信、线程间通信
  • 基于Qt的UDP主从服务器设计与实现
  • 集群聊天项目服务器----JSON库
  • C语言:排序算法
  • 作为测试人员,平时用什么大模型?怎么用?
  • PHP语法基础篇(五):流程控制
  • 如何匹配晶振的负载电容
  • 【SystemVerilog 2023 Std】第6章 数据类型 Data types (1)
  • C# 网络编程-关于请求头(Request Headers)和 响应头(Response Headers)作用(五)
  • SiteAzure:解决数据库服务器内存频繁吃满
  • 【Linux 平台总线驱动开发实战】
  • 三种语言写 MCP
  • 大数据量的分页,怎么办?
  • MagnTek MT6816-ACD 一款基于各向异性磁阻(AMR)技术的磁性角度传感器 IC
  • 现代浏览器剪贴板操作指南 + 示例页面 navigator.clipboard 详解与实战
  • 1.20.1 服务器系统(windows,Rocky 和 Ubuntu )体验
  • 浅议 3D 展示技术为线上车展新体验带来的助力​
  • 【Docker基础】Docker镜像管理:docker rmi、prune详解
  • 基于Spring Boot瀚森健身房会员管理系统设计与实现【源码+文档】
  • 中讯科技-运城网站建设/网络营销有什么特点
  • 接单网站开发/常用的seo网站优化排名
  • 广东模板网站建设/如何宣传推广自己的店铺
  • 网页设计教程属于web吗/优化精灵
  • 做微商有卖鞋子的网站吗/关键词优化营销
  • 石家庄网站建设推广公司哪家好/如何提高网站搜索排名