※ 引述《jas1123kimo (杰森)》之铭言:
: 2. 要怎么Debug及测试
: 因为小弟我之前都在学校,写的程式不会这么庞大?
: Debug就是设定很多的Pritf看运作的参数
: 或者丢各种测资,而且要每个Function都要跑到
: 但每次这样回答完
: 面试官都露出应该还有其他的方法的脸看着我。
: 请问还可以怎样测试或Debug呢
1. 测试
单元测试 集成测试 重点应该是要能自动化
测资从正常数值开始抓 接着抓极端值
对于可逻辑产生的数值 也会自动化产生测资
会考虑输入内存配置失败 或外部资源无效时的案例
如果是performance-critical的区段 还会加上时间测量
测试时会将bug的情况作为test case追加
讲完要反问一下面试官 你们覆蓋率几%
2. Debug
首要工作是是要确立重现的流程
并且将重现bug的流程做到最精简
原因:过于繁复的重现步骤表示涉及的程式码越多 则越难找到bug的出处
对于我不熟悉的专案,我会从操作步骤的UI层开始追踪
且如果是资料的错误,我会利用watcher监看资料实体是在哪个时机点被改变
如果是偶发的错误,我会利用conditional breakpoint增进debug的效率
莫名的资源无效或内存错误 我会检查有无多执行续或重复释放、destruction
等可能的行为
如果是第三方library或dll的bug,我会先阅读文件确认使用方式无误,如还是
无法发现问题则会到官方的bug tracker查询有无类似情况。若以上均无解且与
该公司无合作关系或状况急迫,我会以组合语言的形式下断点并观察memory变化
试图出可能的原因,并从input或使用方式解决此问题
解释完自己如何进行debug
如果之前面试官说公司测试覆蓋率不高或根本答非所问打太极的话
记得要反问面试官 贵公司修正bug后
如何确保不会产生其他bug 以及如何落实code reivew
作者:
yamakazi (大安吴彦祖)
2019-09-27 22:59:00录取了 明天来报到可以加上用gdb 看core-dump 设watchdog 程式内的exception处理的经验
虽然很难启齿,很多情我都把Error讯息贴到Google就解了
内存错误可以用valgrind 让你多个名词可以秀
作者: fju4012 (Steven) 2019-09-28 00:36:00
安安想请问文中技巧都不会是正常的吗
作者:
maxqq (max)
2019-09-28 00:58:00当你讲完,台湾面试官会跟你谢谢再联络
作者:
jack0204 (Jarbar王朝)
2019-09-28 09:00:00OverValue,掰掰
作者:
DLHZ ( )
2019-09-28 13:09:00推
作者: black209 (black209) 2019-09-28 13:24:00
谢谢 学到新东西
作者:
lantw44 (#######################)
2019-09-28 14:39:00除了 Valgrind 以外 GCC 和 Clang 还有 -fsanitize= 系列参数可以开来用,strace、ktrace、dtrace 有时候也很有用
作者:
k3nt (k3nt)
2019-09-28 15:20:00棒
作者:
maxqq (max)
2019-09-28 18:59:00台湾没几家面试官底子硬的,大部分都是当你‘工具’
作者:
groza (狗煞)
2019-09-28 22:31:00大推
想请问以组语形式下断点是什么意思呢?这跟平常IDE设断点插在哪边?谢谢
作者:
sharku (明珠求瑕)
2019-09-29 14:48:00推
作者: asg269 2019-09-29 18:01:00
推
作者:
remmurds (Stronghold)
2019-09-29 21:20:00集成测试