aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/builtin-probe.c
diff options
context:
space:
mode:
Diffstat (limited to 'tools/perf/builtin-probe.c')
-rw-r--r--tools/perf/builtin-probe.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/tools/perf/builtin-probe.c b/tools/perf/builtin-probe.c
index a1467d12547a..b5ad86a265ff 100644
--- a/tools/perf/builtin-probe.c
+++ b/tools/perf/builtin-probe.c
@@ -35,6 +35,8 @@
35#include "perf.h" 35#include "perf.h"
36#include "builtin.h" 36#include "builtin.h"
37#include "util/util.h" 37#include "util/util.h"
38#include "util/event.h"
39#include "util/debug.h"
38#include "util/parse-options.h" 40#include "util/parse-options.h"
39#include "util/parse-events.h" /* For debugfs_path */ 41#include "util/parse-events.h" /* For debugfs_path */
40#include "util/probe-finder.h" 42#include "util/probe-finder.h"
@@ -76,7 +78,7 @@ static int parse_probepoint(const struct option *opt __used,
76 if (!str) /* The end of probe points */ 78 if (!str) /* The end of probe points */
77 return 0; 79 return 0;
78 80
79 debug("Probe-define(%d): %s\n", session.nr_probe, str); 81 eprintf("probe-definition(%d): %s\n", session.nr_probe, str);
80 if (++session.nr_probe == MAX_PROBES) 82 if (++session.nr_probe == MAX_PROBES)
81 semantic_error("Too many probes"); 83 semantic_error("Too many probes");
82 84
@@ -101,7 +103,7 @@ static int parse_probepoint(const struct option *opt __used,
101 die("strndup"); 103 die("strndup");
102 if (++argc == MAX_PROBE_ARGS) 104 if (++argc == MAX_PROBE_ARGS)
103 semantic_error("Too many arguments"); 105 semantic_error("Too many arguments");
104 debug("argv[%d]=%s\n", argc, argv[argc - 1]); 106 eprintf("argv[%d]=%s\n", argc, argv[argc - 1]);
105 } 107 }
106 } while (*str != '\0'); 108 } while (*str != '\0');
107 if (argc < 2) 109 if (argc < 2)
@@ -131,7 +133,7 @@ static int parse_probepoint(const struct option *opt __used,
131 pp->line = atoi(ptr); 133 pp->line = atoi(ptr);
132 if (!pp->file || !pp->line) 134 if (!pp->file || !pp->line)
133 semantic_error("Failed to parse line."); 135 semantic_error("Failed to parse line.");
134 debug("file:%s line:%d\n", pp->file, pp->line); 136 eprintf("file:%s line:%d\n", pp->file, pp->line);
135 } else { 137 } else {
136 /* Function name */ 138 /* Function name */
137 ptr = strchr(arg, '+'); 139 ptr = strchr(arg, '+');
@@ -148,7 +150,7 @@ static int parse_probepoint(const struct option *opt __used,
148 pp->file = strdup(ptr); 150 pp->file = strdup(ptr);
149 } 151 }
150 pp->function = strdup(arg); 152 pp->function = strdup(arg);
151 debug("symbol:%s file:%s offset:%d\n", 153 eprintf("symbol:%s file:%s offset:%d\n",
152 pp->function, pp->file, pp->offset); 154 pp->function, pp->file, pp->offset);
153 } 155 }
154 free(argv[1]); 156 free(argv[1]);
@@ -173,7 +175,7 @@ static int parse_probepoint(const struct option *opt __used,
173 session.need_dwarf = 1; 175 session.need_dwarf = 1;
174 } 176 }
175 177
176 debug("%d arguments\n", pp->nr_args); 178 eprintf("%d arguments\n", pp->nr_args);
177 return 0; 179 return 0;
178} 180}
179 181
@@ -186,7 +188,7 @@ static int open_default_vmlinux(void)
186 188
187 ret = uname(&uts); 189 ret = uname(&uts);
188 if (ret) { 190 if (ret) {
189 debug("uname() failed.\n"); 191 eprintf("uname() failed.\n");
190 return -errno; 192 return -errno;
191 } 193 }
192 session.release = uts.release; 194 session.release = uts.release;
@@ -194,11 +196,12 @@ static int open_default_vmlinux(void)
194 ret = snprintf(fname, MAX_PATH_LEN, 196 ret = snprintf(fname, MAX_PATH_LEN,
195 default_search_path[i], session.release); 197 default_search_path[i], session.release);
196 if (ret >= MAX_PATH_LEN || ret < 0) { 198 if (ret >= MAX_PATH_LEN || ret < 0) {
197 debug("Filename(%d,%s) is too long.\n", i, uts.release); 199 eprintf("Filename(%d,%s) is too long.\n", i,
200 uts.release);
198 errno = E2BIG; 201 errno = E2BIG;
199 return -E2BIG; 202 return -E2BIG;
200 } 203 }
201 debug("try to open %s\n", fname); 204 eprintf("try to open %s\n", fname);
202 fd = open(fname, O_RDONLY); 205 fd = open(fname, O_RDONLY);
203 if (fd >= 0) 206 if (fd >= 0)
204 break; 207 break;
@@ -213,6 +216,8 @@ static const char * const probe_usage[] = {
213}; 216};
214 217
215static const struct option options[] = { 218static const struct option options[] = {
219 OPT_BOOLEAN('v', "verbose", &verbose,
220 "be more verbose (show parsed arguments, etc)"),
216#ifndef NO_LIBDWARF 221#ifndef NO_LIBDWARF
217 OPT_STRING('k', "vmlinux", &session.vmlinux, "file", 222 OPT_STRING('k', "vmlinux", &session.vmlinux, "file",
218 "vmlinux/module pathname"), 223 "vmlinux/module pathname"),
@@ -336,7 +341,7 @@ int cmd_probe(int argc, const char **argv, const char *prefix __used)
336 ret = find_probepoint(fd, pp); 341 ret = find_probepoint(fd, pp);
337 if (ret <= 0) 342 if (ret <= 0)
338 die("No probe point found.\n"); 343 die("No probe point found.\n");
339 debug("probe event %s found\n", session.events[j]); 344 eprintf("probe event %s found\n", session.events[j]);
340 } 345 }
341 close(fd); 346 close(fd);
342 347