perf record: Fix existing process callgraph symbol
austin_zhang@linux.intel.com [Fri, 5 Feb 2010 17:02:42 +0000 (09:02 -0800)]
When 'perf record -g' a existing process, even with debuginfo
packages, still cannnot get symbol from 'perf report'.

try:

 perf record -g -p `pidof xxx` -f
 perf report

    68.26%    :1181           b74870f2  [.] 0x000000b74870f2
              |
              |--32.09%-- 0xb73b5b44
              |          0xb7487102
              |          0xb748a4e2
              |          0xb748633d
              |          0xb73b41cd
              |          0xb73b4467
              |          0xb747d531

The reason is: for existing process, in __cmd_record(),
the pid is 0 rather than the existing process id.

Signed-off-by: Austin Zhang <austin_zhang@linux.intel.com>
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Frederic Weisbecker <fweisbec@gmail.com>
LKML-Reference: <4710.10.255.24.35.1265389362.squirrel@linux.intel.com>
Signed-off-by: Ingo Molnar <mingo@elte.hu>

tools/perf/builtin-record.c

index 3ad599b..771533c 100644 (file)
@@ -570,7 +570,7 @@ static int __cmd_record(int argc, const char **argv)
        }
 
        if (!system_wide && profile_cpu == -1)
-               event__synthesize_thread(pid, process_synthesized_event,
+               event__synthesize_thread(target_pid, process_synthesized_event,
                                         session);
        else
                event__synthesize_threads(process_synthesized_event, session);