diff options
author | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-18 21:24:56 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2020-02-18 21:24:56 +0000 |
commit | 5c32ae4df8979c78e50d9ac84a35e566c9aa3117 (patch) | |
tree | 85193daeffada2888a97af8edcb4fca64518e104 | |
parent | 9d30130325d73b909a058db9d9c643ee113dc8fd (diff) | |
parent | d0ac12978722d3f01efec16eb81fc3a149448f1c (diff) | |
download | extras-5c32ae4df8979c78e50d9ac84a35e566c9aa3117.tar.gz |
Merge "simpleperf: pass log option to cmd running in app context." am: e35ebc47e0 am: a8f7c4ad1a am: d0ac129787
Change-Id: I807b0b4d8a45f5f0e77370b45be3e166ad618bd1
-rw-r--r-- | simpleperf/command.cpp | 8 | ||||
-rw-r--r-- | simpleperf/command.h | 4 | ||||
-rw-r--r-- | simpleperf/environment.cpp | 6 | ||||
-rw-r--r-- | simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp | 1 |
4 files changed, 19 insertions, 0 deletions
diff --git a/simpleperf/command.cpp b/simpleperf/command.cpp index e937e19b..d00fc224 100644 --- a/simpleperf/command.cpp +++ b/simpleperf/command.cpp @@ -27,6 +27,8 @@ #include "utils.h" +using namespace simpleperf; + bool Command::NextArgumentOrError(const std::vector<std::string>& args, size_t* pi) { if (*pi + 1 == args.size()) { LOG(ERROR) << "No argument following " << args[*pi] << " option. Try `simpleperf help " << name_ @@ -129,10 +131,15 @@ static void StderrLogger(android::base::LogId, android::base::LogSeverity severi fprintf(stderr, "simpleperf %c %s:%u] %s\n", severity_char, file, line, message); } +namespace simpleperf { +bool log_to_android_buffer = false; +} + bool RunSimpleperfCmd(int argc, char** argv) { android::base::InitLogging(argv, StderrLogger); std::vector<std::string> args; android::base::LogSeverity log_severity = android::base::INFO; + log_to_android_buffer = false; for (int i = 1; i < argc; ++i) { if (strcmp(argv[i], "--help") == 0 || strcmp(argv[i], "-h") == 0) { @@ -151,6 +158,7 @@ bool RunSimpleperfCmd(int argc, char** argv) { #if defined(__ANDROID__) } else if (strcmp(argv[i], "--log-to-android-buffer") == 0) { android::base::SetLogger(android::base::LogdLogger()); + log_to_android_buffer = true; #endif } else if (strcmp(argv[i], "--version") == 0) { LOG(INFO) << "Simpleperf version " << GetSimpleperfVersion(); diff --git a/simpleperf/command.h b/simpleperf/command.h index 2ce789e4..fe71a31a 100644 --- a/simpleperf/command.h +++ b/simpleperf/command.h @@ -88,4 +88,8 @@ std::unique_ptr<Command> CreateCommandInstance(const std::string& cmd_name); const std::vector<std::string> GetAllCommandNames(); bool RunSimpleperfCmd(int argc, char** argv); +namespace simpleperf { +extern bool log_to_android_buffer; +} + #endif // SIMPLE_PERF_COMMAND_H_ diff --git a/simpleperf/environment.cpp b/simpleperf/environment.cpp index e5be3026..29e43ac2 100644 --- a/simpleperf/environment.cpp +++ b/simpleperf/environment.cpp @@ -41,6 +41,7 @@ #include <android-base/properties.h> #endif +#include "command.h" #include "event_type.h" #include "IOEventLoop.h" #include "read_elf.h" @@ -48,6 +49,8 @@ #include "utils.h" #include "workload.h" +using namespace simpleperf; + class LineReader { public: explicit LineReader(FILE* fp) : fp_(fp), buf_(nullptr), bufsize_(0) { @@ -626,6 +629,9 @@ bool InAppRunner::RunCmdInApp(const std::string& cmd, const std::vector<std::str // 1. Build cmd args running in app's context. std::vector<std::string> args = GetPrefixArgs(cmd); args.insert(args.end(), {"--in-app", "--log", GetLogSeverityName()}); + if (log_to_android_buffer) { + args.emplace_back("--log-to-android-buffer"); + } if (need_tracepoint_events) { // Since we can't read tracepoint events from tracefs in app's context, we need to prepare // them in tracepoint_file in shell's context, and pass the path of tracepoint_file to the diff --git a/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp b/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp index aeddee9e..9aec41f0 100644 --- a/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp +++ b/simpleperf/simpleperf_app_runner/simpleperf_app_runner.cpp @@ -104,6 +104,7 @@ static void CheckSimpleperfArguments(const char* cmdname, char** args) { } std::set<std::string> zero_arg_options = { "-b", "--csv", "--exit-with-parent", "-g", "--in-app", "--interval-only-values", + "--log-to-android-buffer", "--no-callchain-joiner", "--no-dump-kernel-symbols", "--no-dump-symbols", "--no-inherit", "--post-unwind=no", "--post-unwind=yes", "--trace-offcpu", "--verbose", }; |