阅读一份源代码
|
求,为了调试跟踪Nginx的行为,我经常把worker数量设置为1个,这样调试的时候就知道待跟踪的是哪个进程了。 总而言之,跑起来之后的调试效率能提升很多,而在跑起来的前提之下又要尽量精简环境。 调试手段 调试手段,大体分为以下两种:
总之,在能够搭建自己的调试环境之后,还需要想办法确定一下如何加上调试日志以及断点调试。 使用顺手的工具 好的工具会让你事半功倍,这一点应该很多人都同意。 我阅读Go代码的时候,喜欢使用IDEA,这个IDE工具可以***的做到以下几点: 符号的定位、跳转、查找符号被引用的地方。 左边能够展开一个源码文件中的所有符号。 反之,很多人推崇的VSCode,我几次尝试使用用来阅读Go和C类代码,都觉得不够顺手,查找符号能力不行、也没有地方可以看到一个文件中出现的符号。 CC++类的代码,在尝试各种工具之后,还是使用Vim+Ctags+Cscope来写C、C++代码。 情景分析 假如有了前面的基础,已经能够让项目顺利在自己的调试环境跑起来了,那么就可以对项目代码进行情景分析了。 所谓的“情景分析”,我的理解就是自己构造一些情景,然后通过加断点、调试语句等分析在这些场景下的行为。 以我自己为例,在写《Lua设计与实现》时,讲解到Lua虚拟机指令的解释和执行过程中,需要针对每个指令做分析,此时用的就是情景分析的方法。我会模拟出来使用该指令的Lua脚本代码,然后在程序里断点调试这些场景下的行为。 我惯用的做法,是在某个重要的入口函数上面加上断点,然后构造触发场景的调试代码,当代码在断点处停下,通过查看堆栈、变量值等等来观察代码的行为。
情景分析的好处在于:不会在一个项目中大海捞针似的查找,而是能够把问题缩小到一个范围内展开来理解。 (编辑:桂林站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |


