使用 cmusee 快速理解复杂 C/C++ 代码
单步调试器gdb 等但是单步调试器需要麻烦且复杂的操作才能定位到需要查看的代码如果错过需要查看的位置还要从头开始打 log但是可以获得的信息较少并且程序需要重新编译如果插入的语句不足以找到关键问题还需要继续插入代码然后重新编译这两种常用的方法都是麻烦且低效的如果需要理解整个程序的运行过程例如在理解他人编写的代码时则需要花费大量时间。cmusee 可以完美解决这些问题工作原理简单来说cmusee 在程序运行时记录所有运行时信息在查看时可以像翻书一样翻到任意一页省去了打 log 或操作调试器的过程在理解开源代码或者同事的代码或者找自己的 bug 时可以省掉大量时间下载安装在 https://veefuse.com/zh-CN/cmusee/download下载按官方说明把 bin 目录加入 PATH 变量就可以了当然不加直接解压使用也可以编译项目在原有编译指令前加上cmbuild --例如cmbuild -- make -j10或者用 cmc 直接代替 gcc例如gcc test.c -o test改为cmc test.c -o test用 cmc 直接代替 gcmc test.cpp -o test以这段简单的代码为例// test.c #include stdio.h int main(){ puts(hello world); return 0; }运行编译指令可以编译出 test 可执行文件运行使用命令cmusee -- ./test运行输出结果hello world Server is running on: http://127.0.0.1:8890第一行是程序的输出结果用浏览器打开 http://127.0.0.1:8890 即可查看程序的运行过程图形界面用上面的命令可以输出这个图形界面在左边的栈视图点击每个帧就可以跳转到对应函数显示出参数和返回值查询内存例如这个 argv, 是一个字符串数组那么在详情区的 argv 的第一个下拉按钮应该选择 A 就是数组然后数组长度要自己填这里填 2第二个下拉按钮选择 S 就是字符串快捷键Alt . : 切换视图在编辑区实际上不可编辑把光标移动到某个函数调用就可以用这几个快捷键Alt UpArrow : 切换到上一个帧 Alt DownArrow : 切换到下一个帧 Alt LeftArrow : 切换到父帧 Alt RightArrow : 进入帧