(1)linux下文本操作以及log相关内容可视化
首先获取日志文件,然后使用linux的awk工具抽取包含某字段的整行日志并保存到文件

awk '{if($0~"key_value") print}' xxx.log > a.txt

这时候,xxx.log文件中只会包含某些特定的行,但是其实你只需要行里面的某一列(比如打印的函数耗时),注意行号是从1开始的。

awk '{print $列号}' xxx.log > timestamp.txt

此时就可以使用kst2工具将里面的内容可视化了(注意kst的列号也是从1开始的)。

kst2 timestamp.txt -y 列号

(2)高效的离线调试手段

在跑slam的长数据集的时候,需要花比较长的时间来看ros的可视化,可以采用下面的方法提高效率。使用Kazam录制屏幕,使用sm-player对录制的视频进行回放。sm-player能够对视频进行加速播放。

安装Kazam和sm-player的命令如下

sudo apt-get install kazam
sudo apt-get install smplayer

Kazam录制视频的方法很简单,这里就不介绍了。下面介绍下smplayer回放功能,打开smplayer,然后点击Open,选择File,点击播放,快进的快捷键为“]”,慢进的快捷键为“[”,快速切换到正常速度的快捷键为"Backspace"也就是删除键。

(3)valgrind内存分析

使用valgrind检查内存占用

valgrind -tool=massif ./exe #可执行程序的Args...

使用massif-visualizer对内存分析的结果进行可视化。首先启动massif-visualizer,然后打开log文件就可以了。

massif-visualizer的安装命令如下:

sudo apt-get install massif-visualizer

(4)valgrind代码耗时分析

可以检查不同函数对cpu资源的使用情况

valgrind -tool=callgrind ./exe #可执行程序的Args..

生成的.out文件用kcachegrind可视化查看