ART: Add logcat output to signal_dumper
Add option "-l" to log to logcat.
As this requires for simplicity to unify the output path, this
degrades the stderr output readability because of the filename
and so on output from LOG.
Bug: 138868214
Test: manual
Change-Id: I6e6920874e6062cd9c27ccafcf59e63ff2334f77
diff --git a/tools/signal_dumper/signal_dumper.cc b/tools/signal_dumper/signal_dumper.cc
index 504d01f..62b5f27 100644
--- a/tools/signal_dumper/signal_dumper.cc
+++ b/tools/signal_dumper/signal_dumper.cc
@@ -449,7 +449,7 @@
abi_str = "x86_64";
break;
}
- std::cerr << "ABI: '" << abi_str << "'" << std::endl;
+ LOG(ERROR) << "ABI: '" << abi_str << "'" << std::endl;
}
} // namespace ptrace
@@ -515,8 +515,7 @@
const std::string* addr2line_path,
const char* prefix,
BacktraceMap* map) {
- // Use std::cerr to avoid the LOG prefix.
- std::cerr << std::endl << "=== pid: " << pid << " tid: " << tid << " ===" << std::endl;
+ LOG(ERROR) << std::endl << "=== pid: " << pid << " tid: " << tid << " ===" << std::endl;
constexpr uint32_t kMaxWaitMicros = 1000 * 1000; // 1s.
if (pid != tid && !WaitForSigStopped(tid, kMaxWaitMicros)) {
@@ -574,19 +573,19 @@
}
oss << ")";
}
- std::cerr << oss.str() << std::endl;
+ LOG(ERROR) << oss.str() << std::endl;
if (try_addr2line && addr2line_path != nullptr) {
addr2line::Addr2line(*addr2line_path,
it->map.name,
it->rel_pc,
- std::cerr,
+ LOG_STREAM(ERROR),
prefix,
&addr2line_state);
}
}
if (addr2line_state != nullptr) {
- addr2line::Drain(0, prefix, &addr2line_state, std::cerr);
+ addr2line::Drain(0, prefix, &addr2line_state, LOG_STREAM(ERROR));
}
}
@@ -681,10 +680,25 @@
} // namespace art
int main(int argc ATTRIBUTE_UNUSED, char** argv) {
+ android::base::InitLogging(argv);
+
int signal = SIGRTMIN + 2;
size_t index = 1u;
CHECK(argv[index] != nullptr);
+
+ bool to_logcat = false;
+#ifdef __ANDROID__
+ if (strcmp(argv[index], "-l") == 0) {
+ index++;
+ CHECK(argv[index] != nullptr);
+ to_logcat = true;
+ }
+#endif
+ if (!to_logcat) {
+ android::base::SetLogger(android::base::StderrLogger);
+ }
+
if (strcmp(argv[index], "-s") == 0) {
index++;
CHECK(argv[index] != nullptr);