OSDN Git Service

simpleperf: fix dumping symbols for unwinded ips.
authorYabin Cui <yabinc@google.com>
Thu, 14 Jul 2016 18:13:41 +0000 (11:13 -0700)
committerYabin Cui <yabinc@google.com>
Thu, 14 Jul 2016 18:23:33 +0000 (11:23 -0700)
Previous code dumps symbols for unwinded ips regardless of
--dump-symbols option. Fix it to be controled by --dump-symbols
option.

Bug: 29581559
Change-Id: Ie7a79bf5275c13b0df4352e4aedc702f34b7b899
Test: run simpleperf_unit_test.

simpleperf/cmd_record.cpp
simpleperf/cmd_record_test.cpp

index 050ca85..5de8ae7 100644 (file)
@@ -803,6 +803,11 @@ bool RecordCommand::ProcessRecord(Record* record) {
       if (!DumpSymbolForRecord(r, false)) {
         return false;
       }
+      if (fp_callchain_sampling_) {
+        if (!DumpSymbolForRecord(r, true)) {
+          return false;
+        }
+      }
     }
   } else if (record->type() == PERF_RECORD_LOST) {
     lost_record_count_ += static_cast<LostRecord*>(record)->lost;
@@ -906,8 +911,10 @@ bool RecordCommand::UnwindRecord(Record* record) {
       r.stack_user_data.data.clear();
       r.stack_user_data.dyn_size = 0;
       r.AdjustSizeBasedOnData();
-      if (!DumpSymbolForRecord(r, true)) {
-        return false;
+      if (dump_symbols_) {
+        if (!DumpSymbolForRecord(r, true)) {
+          return false;
+        }
       }
     }
   }
index 31ea173..afd5bdd 100644 (file)
@@ -294,6 +294,15 @@ TEST(record_cmd, dump_symbols) {
   ASSERT_TRUE(RunRecordCmd({"--dump-symbols"}, tmpfile.path));
   CheckDsoSymbolRecords(tmpfile.path, true, &success);
   ASSERT_TRUE(success);
+  if (IsDwarfCallChainSamplingSupported()) {
+    ASSERT_TRUE(RunRecordCmd({"-g"}, tmpfile.path));
+    bool success;
+    CheckDsoSymbolRecords(tmpfile.path, false, &success);
+    ASSERT_TRUE(success);
+    ASSERT_TRUE(RunRecordCmd({"-g", "--dump-symbols"}, tmpfile.path));
+    CheckDsoSymbolRecords(tmpfile.path, true, &success);
+    ASSERT_TRUE(success);
+  }
 }
 
 TEST(record_cmd, group_option) {