diff options
author | Haamed Gheibi <haamed@google.com> | 2021-09-30 03:31:03 +0000 |
---|---|---|
committer | Haamed Gheibi <haamed@google.com> | 2021-09-30 03:32:37 +0000 |
commit | 0d25a36c4a05b7dc1fe833d311cba0abd1979db7 (patch) | |
tree | b9bb668d79bdb511337c63d71f724fd7c5d16cad /audio/core/all-versions/default/Device.cpp | |
parent | 41b783ac627a1562c9959d2a309339c43e89ee95 (diff) | |
parent | e58dbcf0de859ade425f22b62a45259449ae538d (diff) |
Merge TP1A.210812.002
Bug: 198367246
Change-Id: I64df13aefdc06c8bb9f9b3a4256c41879e15e515
Diffstat (limited to 'audio/core/all-versions/default/Device.cpp')
-rw-r--r-- | audio/core/all-versions/default/Device.cpp | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/audio/core/all-versions/default/Device.cpp b/audio/core/all-versions/default/Device.cpp index 130dfba95b..c33e6f30fa 100644 --- a/audio/core/all-versions/default/Device.cpp +++ b/audio/core/all-versions/default/Device.cpp @@ -30,6 +30,8 @@ #include <algorithm> #include <android/log.h> +#include <mediautils/MemoryLeakTrackUtil.h> +#include <memunreachable/memunreachable.h> #include <HidlUtils.h> @@ -456,9 +458,32 @@ Return<void> Device::debugDump(const hidl_handle& fd) { } #endif -Return<void> Device::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& /* options */) { +Return<void> Device::debug(const hidl_handle& fd, const hidl_vec<hidl_string>& options) { if (fd.getNativeHandle() != nullptr && fd->numFds == 1) { - analyzeStatus("dump", mDevice->dump(mDevice, fd->data[0])); + const int fd0 = fd->data[0]; + bool dumpMem = false; + bool unreachableMemory = false; + for (const auto& option : options) { + if (option == "-m") { + dumpMem = true; + } else if (option == "--unreachable") { + unreachableMemory = true; + } + } + + if (dumpMem) { + dprintf(fd0, "\nDumping memory:\n"); + std::string s = dumpMemoryAddresses(100 /* limit */); + write(fd0, s.c_str(), s.size()); + } + if (unreachableMemory) { + dprintf(fd0, "\nDumping unreachable memory:\n"); + // TODO - should limit be an argument parameter? + std::string s = GetUnreachableMemoryString(true /* contents */, 100 /* limit */); + write(fd0, s.c_str(), s.size()); + } + + analyzeStatus("dump", mDevice->dump(mDevice, fd0)); } return Void(); } |