Debug 的时候又遇到这种灵异事件了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
villivateur
1.56D
V2EX    程序员

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

  •  
  •   villivateur 2022-03-01 15:19:29 +08:00 3563 次点击
    这是一个创建于 1325 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    大多数人把藏起,越藏日后越遇到,就更加法查,只有找到解根本才能真正成高手

    嵌入式一般不建用 c++,查底麻一些
    wjx0912
        10
    wjx0912  
       2022-03-01 21:15:57 +08:00
    strip 之前导出符号表,异常的时候把内存镜像转储
    wjx0912
        11
    wjx0912  
       2022-03-01 21:20:59 +08:00
    找到崩溃点,x86 是 esp ,arm 是 sp ,顺着栈里面找 callback 。开源的工具很多的
    cppc
        12
    cppc  
       2022-03-01 23:08:43 +08:00 via iPhone
    曾经在生产环境发生过程序崩溃问题,代码审查怎么也找不到可疑代码,崩溃转储出来的内存分析验尸也找不到导致问题的原因。

    最后实在没办法了跟甲方摊牌,对方同意直接在 debugger 里面跑程序,这才把 bug 给灭了
    respawn
        13
    respawn  
       2022-03-01 23:11:16 +08:00
    请贴码,无码言甚!
    ShiaoQuR
        14
    ShiaoQuR  
       2022-03-02 10:43:07 +08:00
    把要打印的变量 传递到全局变量 换个地方打印试试呢
    654656413245
        15
    654656413245  
       2022-03-02 13:22:31 +08:00 via iPhone
    可能是内存踩踏。
    添加的 print 语句可能刚好让指令或内存对象排布进入了一个调和状态,让漏洞无法再暴露
    wty
        16
    wty  
       2022-03-02 16:10:03 +08:00
    是不是别处修改了这个变量,然后因为没有 volatile 就默认不会变化,优化掉了,加了 print 打破了优化
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1136 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 17:54 PVG 01:54 LAX 10:54 JFK 13:54
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86