From 86e64c892a570aaca81c939ed9a4ad2aa32de5d9 Mon Sep 17 00:00:00 2001 From: yaomanhai Date: Tue, 23 Aug 2022 18:30:36 +0800 Subject: [PATCH] Bugfix: process name not displayed in statistic info Signed-off-by: yaomanhai --- frameworks/libhilog/utils/log_utils.cpp | 2 +- services/hilogd/etc/hilogd.cfg | 1 + services/hilogtool/log_display.cpp | 19 ++++++++++++++++--- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/frameworks/libhilog/utils/log_utils.cpp b/frameworks/libhilog/utils/log_utils.cpp index 47f6516..14f9d3b 100644 --- a/frameworks/libhilog/utils/log_utils.cpp +++ b/frameworks/libhilog/utils/log_utils.cpp @@ -411,7 +411,7 @@ static const int CMDLINE_PATH_LEN = 32; string GetNameByPid(uint32_t pid) { char path[CMDLINE_PATH_LEN] = { 0 }; - if (snprintf_s(path, CMDLINE_PATH_LEN, CMDLINE_PATH_LEN - 1, "/proc/%d/cmdline", pid) <= 0) { + if (snprintf_s(path, CMDLINE_PATH_LEN, CMDLINE_PATH_LEN - 1, "/proc/%d/comm", pid) <= 0) { return ""; } ifstream file(path); diff --git a/services/hilogd/etc/hilogd.cfg b/services/hilogd/etc/hilogd.cfg index 48cefe6..462d995 100644 --- a/services/hilogd/etc/hilogd.cfg +++ b/services/hilogd/etc/hilogd.cfg @@ -23,6 +23,7 @@ "disabled" : 1, "uid" : "logd", "gid" : ["system", "log"], + "caps" : ["CAP_DAC_READ_SEARCH", "CAP_SYS_PTRACE"], "sandbox" : 0, "file" : ["/dev/kmsg rd 0640 root root"], "socket" : [{ diff --git a/services/hilogtool/log_display.cpp b/services/hilogtool/log_display.cpp index 8c48026..810a36b 100644 --- a/services/hilogtool/log_display.cpp +++ b/services/hilogtool/log_display.cpp @@ -177,6 +177,18 @@ static void HilogShowDomainStatsInfo(const StatsQueryRsp& rsp) } } +static string GetProcessName(const ProcStatsRsp &pStats) +{ + /* hap process is forked from /system/bin/appspawn, sa process is /system/bin/sa_main + the name will be changed after process forking, hilogd holds the original name always, + here we need reconfirm it */ + string name = GetNameByPid(pStats.pid); + if (name == "") { + name = pStats.name; + } + return name; +} + static void HilogShowProcStatsInfo(const StatsQueryRsp& rsp) { cout << "Pid Table:" << endl; @@ -189,9 +201,10 @@ static void HilogShowProcStatsInfo(const StatsQueryRsp& rsp) } for (i = 0; i < rsp.procNum; i++) { ProcStatsRsp &pStats = rsp.pStats[i]; + string name = GetProcessName(pStats); cout << setw(LOGTYPE_W) << "-" << colCmd; cout << setw(PID_W) << pStats.pid << colCmd; - cout << setw(PNAME_W) << pStats.name << colCmd; + cout << setw(PNAME_W) << name << colCmd; cout << setw(TAG_W) << "-" << colCmd; PrintStats(pStats.stats); cout << endl; @@ -206,7 +219,7 @@ static void HilogShowProcStatsInfo(const StatsQueryRsp& rsp) } cout << setw(LOGTYPE_W) << LogType2Str(lStats.type) << colCmd; cout << setw(PID_W) << pStats.pid << colCmd; - cout << setw(PNAME_W) << pStats.name << colCmd; + cout << setw(PNAME_W) << name << colCmd; cout << setw(TAG_W) << "-" << colCmd; PrintStats(lStats.stats); cout << endl; @@ -218,7 +231,7 @@ static void HilogShowProcStatsInfo(const StatsQueryRsp& rsp) TagStatsRsp &tStats = pStats.tStats[j]; cout << setw(LOGTYPE_W) << "-" << colCmd; cout << setw(PID_W) << pStats.pid << colCmd; - cout << setw(PNAME_W) << pStats.name << colCmd; + cout << setw(PNAME_W) << name << colCmd; cout << setw(TAG_W) << tStats.tag << colCmd; PrintStats(tStats.stats); cout << endl; -- Gitee