ChrisSeko
2022-04-17T02:54:16+00:00
非计算机专业找了个开发的工作,C++以及CS相关课程都是自己看视频补的,这些倒还好。但debug方面就完全不会了,大佬同事就一句“定位一下这个问题”,默认你会gdb啥的各种debug手段,然而面对debug我完全无从下手,感觉主要还是实战经验太少。
想问一下debug方面有什么从零开始的教程吗?github上有啥debug实战的project吗?该如何积累和提升debug能立?感觉我问的好笼统[s:ac:晕]但确实感觉这方面啥都不懂
人多的公司里,debug都是给团队的边缘人做的
频繁让你去定位问题,或者刚来就让你去定位问题,说明同事和领导想排挤你
正常的节奏应该是:你只去调试你自己写的代码,别人写的烂坑与你无关
若不是的都是1.PUA,或者;2.离职率太高,代码无人维护
[quote][pid=604792767,31571900,1]Reply[/pid] Post by [uid=42499052]ustcyfgao[/uid] (2022-04-21 11:09):
人多的公司里,debug都是给团队的边缘人做的
频繁让你去定位问题,或者刚来就让你去定位问题,说明同事和领导想排挤你
正常的节奏应该是:你只去调试你自己写的代码,别人写的烂坑与你无关
若不是的都是1.PUA,或者;2.离职率太高,代码无人维护[/quote]倒不是这种情况,是最近新引入了一堆测试用例我们全组一半的人都在修,我感觉我对debug方面完全不懂
BUG都定位不到,估计就得走人了吧,难道自己写的代码BUG让别人找。。程序员最恨擦别人屁股。
找问题在哪要靠对项目的理解,另外善用全局字符串搜索,二分和断点
[quote][pid=604800252,31571900,1]Reply[/pid] Post by [uid=23935414]万径。人踪灭[/uid] (2022-04-21 11:33):
BUG都定位不到,估计就得走人了吧,难道自己写的代码BUG让别人找。。程序员最恨擦别人屁股。[/quote]就是定位别人的bug[s:ac:晕][s:ac:晕][s:ac:晕]
靠灵能和冥想。。。
另外前面说debug是边缘人的也是搞笑,新人进去怎么摸透系统成为老人的?
gdb也有图形界面呀,打断点看变量,除非你搞嵌入式直接命令行调,那多痛苦,我也只会程序跑死了看看core文件栈之类的,自己写代码基本就直接print[s:ac:擦汗]
很好奇问出这种问题的人,是咋学会写代码的?
你写代码就是单纯的编译过了就提交么?
你们都有testcase为啥还能定位不了bug?
打断点或者print都行啊。
你跑一下有bug的testcase捋一遍流程看那出问题不就好了。看着意思也没指着你修复。
debug最难的地方在于复现,你要能稳定复现,随便你怎么都好解决呀,gdb断点,printf这类的都可以啊
复现查日志啊,看那里抛异常,抛什么异常,再到代码处研究为什么会导致出错。
无他,常规的业务bug靠的就是经验和对业务流程的理解。经验越丰富,对业务流程理解越深,碰到bug就能更快的想到可能出问题的类,方法,代码行,然后通过前后加日志,断点debug等手段在复现bug的时候证实之前的猜想,最后不断的排除法找到问题真正的根源
[quote][pid=604824467,31571900,1]Reply[/pid] Post by [uid=3415810]Gseal[/uid] (2022-04-21 12:58):
debug最难的地方在于复现,你要能稳定复现,随便你怎么都好解决呀,gdb断点,printf这类的都可以啊[/quote]这些回复里,感觉就你说的最靠谱,其它要么不懂装懂要么瞎扯犊子。
debug第一就是要能重现。
看不惯gdb可以考虑用ida远程动态调试,有图形化界面可用插件也多
其实对于编程人员来说,Debug能力是你自己提升自身素质的最重要的一点。很多人写完代码,不知道什么地方报错这个是很常见的,但你让十个程序员去找bug点以及给出解决方案,能做到这一点的往往十分之一都没有。能找到自己代码的bug算入门,能够找到别人的bug算及格,而要通过bug分析来找出原因,并提出合理的解决方案,那就是高级程序员和普通程序员的差别了。
好在这个能力是可以训练的,可以通过努力得到很大的提升的,所以,多接别人的垃圾代码,debug过程也是让自己不再犯错的过程,等你调过千万遍,那就功到自然成了!