• 请不要在回答技术问题时复制粘贴 AI 生成的内容
DawnMoon
V2EX  ›  程序员

Debug 的时候又遇到这种灵异事件了

  •  
  •   DawnMoon · Mar 1, 2022 · 4393 views
    This topic created in 1713 days ago, the information mentioned may be changed or developed.

    CPP 写嵌入式代码,有个中等概率复现的 Bug ,在怀疑的地方写了行 printf 调试输出,Bug 便再也不复现。删掉调试输出,Bug 又出来了……

    16 replies  •  2022-03-02 16:10:03 +08:00
    Takashi123
    Takashi123
    Mar 1, 2022
    1
    debug 版本合 release 版本不一样,还有内存越界这类如果破坏到堆栈了,可能加一行代码就结果不一样了。
    BeijingBaby
    BeijingBaby
    PRO
    Mar 1, 2022❤️6
    2
    printf 一个不可见字符 -> fixed
    DawnMoon
    DawnMoon
    OP
    Mar 1, 2022
    3
    @Takashi123 一直都是 debug 版本,确实怀疑堆栈问题,但这东西太难查了
    darkengine
    darkengine
    Mar 1, 2022
    4
    要是硬件时序问题,那就难搞了。。。
    nightwitch
    nightwitch
    Mar 1, 2022
    5
    编译器版本高的话可以试试看能不能链上 AddressSantinizer ,专治内存疑难杂症
    anytk
    anytk
    Mar 1, 2022
    6
    一般都是堆栈问题,仔细看一些调用地方,尤其是参数是数组的,我最近也被坑过一次
    hiliyg
    hiliyg
    Mar 1, 2022
    7
    很正常,我司很多驱动也会这样,加的 log 多就没问题,log 一去掉,就不行,跟硬件响应时间,时序啥的有关系
    janxin
    janxin
    Mar 1, 2022
    8
    @villivateur 一般这样子的 bug 确实很难查,于是我们就这么带了一个 printf
    duke807
    duke807
    Mar 1, 2022 via Android
    9
    不知道是裸跑,還是小系統,還是 linux 用戶空間
    按照關鍵字查一遍:堆棧、越界、對齊、dma 、cache

    大多数人會選擇把問題藏起來,越藏日后越會遇到問題,就更加沒法查,只有選擇找到並解決根本問題才能真正成為高手

    嵌入式一般不建議用 c++,查底層問題會麻煩一些
    datadump
    datadump
    PRO
    Mar 1, 2022
    10
    strip 之前导出符号表,异常的时候把内存镜像转储
    datadump
    datadump
    PRO
    Mar 1, 2022
    11
    找到崩溃点,x86 是 esp ,arm 是 sp ,顺着栈里面找 callback 。开源的工具很多的
    cppc
    cppc
    Mar 1, 2022 via iPhone
    12
    曾经在生产环境发生过程序崩溃问题,代码审查怎么也找不到可疑代码,崩溃转储出来的内存分析验尸也找不到导致问题的原因。

    最后实在没办法了跟甲方摊牌,对方同意直接在 debugger 里面跑程序,这才把 bug 给灭了
    respawn
    respawn
    Mar 1, 2022
    13
    请贴码,无码言甚!
    ShiaoQuR
    ShiaoQuR
    Mar 2, 2022
    14
    把要打印的变量 传递到全局变量 换个地方打印试试呢
    654656413245
    654656413245
    Mar 2, 2022 via iPhone
    15
    可能是内存踩踏。
    添加的 print 语句可能刚好让指令或内存对象排布进入了一个调和状态,让漏洞无法再暴露
    wty
    wty
    Mar 2, 2022
    16
    是不是别处修改了这个变量,然后因为没有 volatile 就默认不会变化,优化掉了,加了 print 打破了优化
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1623 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 48ms · UTC 12:42 · PVG 20:42 · LAX 04:42 · JFK 07:42
    ♥ Do have faith in what you're doing.