追踪嵌入式软件中的幽灵错误:-22
Tweede golf团队在为nRF9160微控制器开发的嵌入式Rust软件中遭遇了一个难以捉摸的bug,该bug会导致数据发送到服务器时返回Error::NrfError(-22)错误。经过长达数周的调查,他们发现问题根源在于libmodem库的初始化函数中,一个指向栈上配置结构体的指针在结构体销毁后仍然被使用,导致程序意外地写入共享内存区域配置,从而使发送数据长度变成0。最终,通过添加`black_box`函数和使用watchpoint调试,他们定位并修复了这个bug,并强调了使用Rust进行嵌入式开发的优势,以避免此类低级错误。
阅读更多