You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brpc.apache.org by ja...@apache.org on 2020/11/30 13:33:43 UTC

[incubator-brpc] 02/02: partial fix for profiling under MacOS, symbols are not shown yet(even with llvm-symbolizer)

This is an automated email from the ASF dual-hosted git repository.

jamesge pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-brpc.git

commit e64eb3ce15359263aabf2254379c9130ccff7929
Author: jamesge <jg...@gmail.com>
AuthorDate: Mon Nov 30 21:33:20 2020 +0800

    partial fix for profiling under MacOS, symbols are not shown yet(even with llvm-symbolizer)
---
 src/brpc/builtin/hotspots_service.cpp  | 7 +++++--
 test/brpc_builtin_service_unittest.cpp | 6 +++---
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git a/src/brpc/builtin/hotspots_service.cpp b/src/brpc/builtin/hotspots_service.cpp
index b4e8fcf..7f23a0b 100644
--- a/src/brpc/builtin/hotspots_service.cpp
+++ b/src/brpc/builtin/hotspots_service.cpp
@@ -376,6 +376,7 @@ static void NotifyWaiters(ProfilingType type, const Controller* cur_cntl,
 }
 
 #if defined(OS_MACOSX)
+static const char* s_pprof_binary_path = nullptr;
 static bool check_GOOGLE_PPROF_BINARY_PATH() {
     char* str = getenv("GOOGLE_PPROF_BINARY_PATH");
     if (str == NULL) {
@@ -385,6 +386,7 @@ static bool check_GOOGLE_PPROF_BINARY_PATH() {
     if (fd < 0) {
         return false;
     }
+    s_pprof_binary_path = strdup(str);
     return true;
 }
 
@@ -491,13 +493,13 @@ static void DisplayResult(Controller* cntl,
     }
     cmd_builder << " 2>&1 ";
 #elif defined(OS_MACOSX)
-    cmd_builder << getenv("GOOGLE_PPROF_BINARY_PATH") << " "
+    cmd_builder << s_pprof_binary_path << " "
                 << DisplayTypeToPProfArgument(display_type)
                 << (show_ccount ? " -contentions " : "");
     if (base_name) {
         cmd_builder << "-base " << *base_name << ' ';
     }
-    cmd_builder << prof_name << " 2>&1 ";
+    cmd_builder << GetProgramName() << " " << prof_name << " 2>&1 ";
 #endif
 
     const std::string cmd = cmd_builder.str();
@@ -517,6 +519,7 @@ static void DisplayResult(Controller* cntl,
         errno = 0; // read_command_output may not set errno, clear it to make sure if
                    // we see non-zero errno, it's real error.
         butil::IOBufBuilder pprof_output;
+        RPC_VLOG << "Running cmd=" << cmd;
         const int rc = butil::read_command_output(pprof_output, cmd.c_str());
         if (rc != 0) {
             butil::FilePath pprof_path(pprof_tool);
diff --git a/test/brpc_builtin_service_unittest.cpp b/test/brpc_builtin_service_unittest.cpp
index d9a24a8..21f6f50 100644
--- a/test/brpc_builtin_service_unittest.cpp
+++ b/test/brpc_builtin_service_unittest.cpp
@@ -663,15 +663,15 @@ TEST_F(BuiltinServiceTest, pprof) {
         ClosureChecker done;
         brpc::Controller cntl;
         service.heap(&cntl, NULL, NULL, &done);
-        const int rc = getenv("TCMALLOC_SAMPLE_PARAMETER") ? 0 : brpc::ENOMETHOD;
-        EXPECT_EQ(rc, cntl.ErrorCode());
+        const int rc = getenv("TCMALLOC_SAMPLE_PARAMETER") != nullptr ? 0 : brpc::ENOMETHOD;
+        EXPECT_EQ(rc, cntl.ErrorCode()) << cntl.ErrorText();
     }
     {
         ClosureChecker done;
         brpc::Controller cntl;
         service.growth(&cntl, NULL, NULL, &done);
         // linked tcmalloc in UT
-        EXPECT_EQ(0, cntl.ErrorCode());
+        EXPECT_EQ(0, cntl.ErrorCode()) << cntl.ErrorText();
     }
     {
         ClosureChecker done;


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@brpc.apache.org
For additional commands, e-mail: dev-help@brpc.apache.org