在Linux系统中,DLT(Diagnostic Log and Trace)抓包是一种用于捕获和分析诊断日志与跟踪信息的技术,以下是关于DLT抓包的详细内容:
一、环境搭建
1、安装DLT相关工具
首先需要获取dlt-daemon源码,可以通过以下命令克隆GitHub仓库:
git clone https://github.com/GENIVI/dlt-daemon.git
进入目录后,创建构建目录并编译安装:
cd dlt-daemon mkdir build apt-get update apt-get install –y build-essential cmake .. make make install ldconfig
接着获取dlt-viewer工具,同样先克隆仓库:
git clone https://github.com/GENIVI/dlt-viewer.git
然后安装依赖包并编译:
apt-get install ros-melodic-qt-create apt-get install ros-melodic-qt-build apt-get install libqt5serialport5-dev libudev-dev cmake ..
编译完成后,在build/bin
目录下会生成可执行文件dlt-viewer
。
2、配置DLT Daemon
复制dlt.conf
文件到系统目录:
cd dlt-daemon/src/daemon/ sudo cp dlt.conf /etc/
编辑dlt.conf
文件,根据需求修改相关参数,例如将LoggingMode
设置为合适的模式等。
二、构造测试进程
1、编写测试程序
下面是一个使用C语言编写的简单测试程序示例,该程序包含三个不同的上下文(context),并分别记录了不同级别的日志信息:
include <stdio.h> include <dlt.h> DLT_DECLARE_CONTEXT(myContext1); DLT_DECLARE_CONTEXT(myContext2); DLT_DECLARE_CONTEXT(myContext3); int main() { // register application DLT_REGISTER_APP("MAPP","Test Application for Logging"); // register all contexts DLT_REGISTER_CONTEXT(myContext1,"TES1","Test Context 1 for Logging"); DLT_REGISTER_CONTEXT(myContext2,"TES2","Test Context 2 for Logging"); DLT_REGISTER_CONTEXT(myContext3,"TES3","Test Context 3 for Logging"); // Write your logs DLT_LOG(myContext1,DLT_LOG_ERROR,DLT_INT(5),DLT_STRING("This is a error")); DLT_LOG(myContext2,DLT_LOG_INFO,DLT_INT(5),DLT_STRING("But this only information")); DLT_LOG(myContext3,DLT_LOG_DEBUG,DLT_INT(5),DLT_STRING("But this only information")); // Sleep some time to avoid a flaw in dlt-daemon that would eat your messages if you deregister while it still processes your registration sleep(3); // unregister your contexts DLT_UNREGISTER_CONTEXT(myContext1); DLT_UNREGISTER_CONTEXT(myContext2); DLT_UNREGISTER_CONTEXT(myContext3); // unregister your application DLT_UNREGISTER_APP(); return 0; }
将上述代码保存为example.c
文件,然后在dlt-daemon/examples/example1/
目录下创建构建目录并编译:
cd dlt-daemon/examples/example1/ mkdir build cmake .. make
这样就会生成测试程序dlt-example1
。
2、启动DLT Daemon和接收端
启动DLT Daemon服务:
dlt-daemon -c /etc/dlt.conf
启动log接收端,指定接收日志的文件路径和主机地址:
dlt-receive -o /tmp/log.dlt localhost
运行测试程序:
sudo ./dlt-example1
/tmp/log.dlt
文件中就会记录测试程序产生的日志,可以使用dlt-viewer
工具来查看这些日志。
三、常见问题及解决方法
1、问题一:无法找到dlt-daemon或dlt-viewer命令
解答:这可能是由于环境变量没有正确设置或者安装路径不正确导致的,确保在安装过程中按照正确的步骤进行操作,并且检查系统的PATH
环境变量是否包含了dlt-daemon
和dlt-viewer
所在的目录,如果使用的是apt
安装的,可以尝试更新软件包列表并重新安装相关软件包:
sudo apt-get update sudo apt-get install --reinstall dlt-daemon dlt-viewer
如果是从源代码编译安装的,确认编译后的可执行文件被放置在了系统的可执行文件搜索路径中,例如/usr/local/bin
等目录,如果不是,可以将可执行文件手动移动到这些目录中,或者在运行命令时指定完整的路径。
2、问题二:dlt-viewer无法打开日志文件
解答:首先检查日志文件的路径是否正确,以及文件是否存在且有读取权限,如果路径错误或文件不存在,dlt-viewer
将无法打开日志文件,可能是日志文件格式不正确或者损坏导致无法解析,可以尝试重新生成日志文件,或者检查测试程序是否正确地记录了日志,如果问题仍然存在,可以尝试更新dlt-viewer
工具到最新版本,或者查看官方文档和社区论坛获取更多帮助。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1527754.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复