From d59bc448e2a712cbc0688d519b31c2ee387d7b22 Mon Sep 17 00:00:00 2001 From: Adam Shih Date: Wed, 2 Nov 2022 13:00:36 +0800 Subject: align user experience on Android bug tool Bug: 255250616 Test: adb shell dumpsys android.hardware.dumpstate.IDumpstateDevice/default wlan Change-Id: Ibefd8f9fff91cf6ece1f09dd6b207b6f9c97df4d --- dumpstate/Dumpstate.cpp | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) (limited to 'dumpstate') diff --git a/dumpstate/Dumpstate.cpp b/dumpstate/Dumpstate.cpp index adf51b4..af913fd 100644 --- a/dumpstate/Dumpstate.cpp +++ b/dumpstate/Dumpstate.cpp @@ -246,6 +246,7 @@ Dumpstate::Dumpstate() // if the specified section is not supported. void Dumpstate::dumpTextSection(int fd, const std::string §ionName) { bool dumpAll = (sectionName == kAllSections); + std::string dumpFiles; for (const auto §ion : mTextSections) { if (dumpAll || sectionName == section.first) { @@ -259,22 +260,29 @@ void Dumpstate::dumpTextSection(int fd, const std::string §ionName) { } } - // Execute all programs under vendor/bin/dump/ + // Execute all or designated programs under vendor/bin/dump/ std::unique_ptr dir(opendir("/vendor/bin/dump"), closedir); if (!dir) { - ALOGE("Fail To Open Dir vendor/bin/dump/"); - } else { - dirent *entry; - while ((entry = readdir(dir.get())) != nullptr) { + ALOGE("Fail To Open Dir vendor/bin/dump/"); + ::android::base::WriteStringToFd("Fail To Open Dir vendor/bin/dump/\n", fd); + return; + } + dirent *entry; + while ((entry = readdir(dir.get())) != nullptr) { // Skip '.', '..' if (entry->d_name[0] == '.') { - continue; + continue; } std::string bin(entry->d_name); - auto startTime = startSection(fd, "/vendor/bin/dump/"+bin); - RunCommandToFd(fd, "/vendor/bin/dump/"+bin, {"/vendor/bin/dump/"+bin}); - endSection(fd, "/vendor/bin/dump/"+bin, startTime); - } + dumpFiles = dumpFiles + " " + bin; + if (dumpAll || sectionName == bin) { + auto startTime = startSection(fd, bin); + RunCommandToFd(fd, "/vendor/bin/dump/"+bin, {"/vendor/bin/dump/"+bin}); + endSection(fd, bin, startTime); + if (!dumpAll) { + return; + } + } } if (dumpAll) { @@ -287,6 +295,7 @@ void Dumpstate::dumpTextSection(int fd, const std::string §ionName) { for (const auto §ion : mTextSections) { ::android::base::WriteStringToFd(" " + section.first, fd); } + ::android::base::WriteStringToFd(dumpFiles, fd); ::android::base::WriteStringToFd("\nNote: sections with attachments (e.g. modem) are" "not avalable from the command line.\n", fd); } -- cgit v1.2.3