《断点单步跟踪是一种低效的调试方法》总结:
1、服务器端的程序,单步跟踪,与机器的交互频率运作存在冲突,让软件正常运行会表困难。
2、一个软件的整体 McCabe 复杂度一定远超人脑可以一次处理的极限。但通常我们可以对软件进行模块划分,高内聚低耦合的结构能减少软件复杂度。一个高内聚的模块,可以和外部隔离,方便我们聚焦到模块内部来分析。
3、程序总是有小片段代码加分支构成,单步跟踪陷入局部分支,缺乏全局观.对应McCabe复杂度不高的情况,大脑并行处理所有分支更高效。(当然与code review的经验和功底强相关)
4、看别人项目时,先看文件、模块,全局了解整个项目结构。然后在找一个模块,反向顺藤摸瓜。摸清脉络的时间可以在第一次等待编译构建的时间同步完成,而不需要等构建完后一步步跟踪运行。
5、C++字面意识很可能对应多种实际操作含义
1、服务器端的程序,单步跟踪,与机器的交互频率运作存在冲突,让软件正常运行会表困难。
2、一个软件的整体 McCabe 复杂度一定远超人脑可以一次处理的极限。但通常我们可以对软件进行模块划分,高内聚低耦合的结构能减少软件复杂度。一个高内聚的模块,可以和外部隔离,方便我们聚焦到模块内部来分析。
3、程序总是有小片段代码加分支构成,单步跟踪陷入局部分支,缺乏全局观.对应McCabe复杂度不高的情况,大脑并行处理所有分支更高效。(当然与code review的经验和功底强相关)
4、看别人项目时,先看文件、模块,全局了解整个项目结构。然后在找一个模块,反向顺藤摸瓜。摸清脉络的时间可以在第一次等待编译构建的时间同步完成,而不需要等构建完后一步步跟踪运行。
5、C++字面意识很可能对应多种实际操作含义
6、日志作为辅助手段,或者是临时全局变量记录中间态辅助调试。
参考