You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C++编写DLT日志遇dlt-daemon启动异常问题求助

解决DLT日志程序无法生成可查看日志文件的问题

核心问题分析

从报错信息来看,主要存在三类问题:

  • DLT Daemon启动时默认端口被占用
  • FIFO目录/文件权限配置不足
  • 应用程序无法连接到Daemon的FIFO通信通道

步骤1:解决Daemon端口占用问题

报错bind() error 98: Address already in use说明DLT默认端口(3490)被其他进程占用:

  1. 查找占用端口的进程:
    sudo ss -tulpn | grep 3490
    
  2. 终止占用进程(替换<PID>为查到的进程ID):
    sudo kill -9 <PID>
    
  3. 如果是系统自带的DLT服务在后台运行,先停止服务:
    sudo systemctl stop dlt-daemon
    

步骤2:修复FIFO目录与文件权限

处理/tmp/dltpipes权限错误

手动创建目录并配置权限:

sudo mkdir -p /tmp/dltpipes
sudo chmod 777 /tmp/dltpipes
sudo chown -R $USER:$USER /tmp/dltpipes

启动Daemon时可指定该目录:

sudo dlt-daemon -d -p /tmp/dltpipes

处理应用无法打开/tmp/dlt的问题

手动创建FIFO并赋予读写权限:

sudo mkfifo /tmp/dlt
sudo chmod 666 /tmp/dlt

运行应用前指定环境变量确保路径正确:

export DLT_CONF_FIFO=/tmp/dlt
./DLTExample

步骤3:生成DLT日志文件(供Viewer使用)

有两种可靠的日志生成方式:

方式1:让Daemon直接写入日志文件

启动Daemon时指定输出文件:

sudo dlt-daemon -d -f /var/log/my_dlt_log.dlt

运行应用程序后,日志会自动写入/var/log/my_dlt_log.dlt,直接用DLT Viewer打开即可。

方式2:用dlt-receive捕获日志到文件

  1. 先启动Daemon:
    sudo dlt-daemon -d
    
  2. 新开终端运行dlt-receive捕获日志:
    dlt-receive localhost -o my_dlt_output.dlt
    
  3. 运行应用程序,日志会被保存到my_dlt_output.dlt,之后用Viewer打开。

验证基础配置

确认代码和CMake配置无问题:

  • 代码中DLT_REGISTER_APP/DLT_REGISTER_CONTEXT的调用顺序正确
  • CMake中find_package(automotive-dlt REQUIRED)和target_link_libraries配置正确

内容的提问来源于stack exchange,提问作者Monetillo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 13:32:39