Loading tools/perf/util/debug.c +31 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,9 @@ #include <stdio.h> #include <api/debug.h> #include <linux/time64.h> #ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #endif #include "cache.h" #include "color.h" #include "event.h" Loading Loading @@ -248,3 +250,31 @@ void perf_debug_setup(void) { libapi_set_print(pr_warning_wrapper, pr_warning_wrapper, pr_debug_wrapper); } /* Obtain a backtrace and print it to stdout. */ #ifdef HAVE_BACKTRACE_SUPPORT void dump_stack(void) { void *array[16]; size_t size = backtrace(array, ARRAY_SIZE(array)); char **strings = backtrace_symbols(array, size); size_t i; printf("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf("%s\n", strings[i]); free(strings); } #else void dump_stack(void) {} #endif void sighandler_dump_stack(int sig) { psignal(sig, "perf"); dump_stack(); signal(sig, SIG_DFL); raise(sig); } tools/perf/util/debug.h +3 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,7 @@ int perf_debug_option(const char *str); void perf_debug_setup(void); int perf_quiet_option(void); void dump_stack(void); void sighandler_dump_stack(int sig); #endif /* __PERF_DEBUG_H */ tools/perf/util/util.c +0 −31 Original line number Diff line number Diff line Loading @@ -4,9 +4,6 @@ #include <api/fs/fs.h> #include <sys/mman.h> #include <sys/utsname.h> #ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #endif #include <dirent.h> #include <inttypes.h> #include <signal.h> Loading Loading @@ -353,34 +350,6 @@ int hex2u64(const char *ptr, u64 *long_val) return p - ptr; } /* Obtain a backtrace and print it to stdout. */ #ifdef HAVE_BACKTRACE_SUPPORT void dump_stack(void) { void *array[16]; size_t size = backtrace(array, ARRAY_SIZE(array)); char **strings = backtrace_symbols(array, size); size_t i; printf("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf("%s\n", strings[i]); free(strings); } #else void dump_stack(void) {} #endif void sighandler_dump_stack(int sig) { psignal(sig, "perf"); dump_stack(); signal(sig, SIG_DFL); raise(sig); } unsigned long parse_tag_value(const char *str, struct parse_tag *tags) { struct parse_tag *i = tags; Loading tools/perf/util/util.h +0 −3 Original line number Diff line number Diff line Loading @@ -80,9 +80,6 @@ void event_attr_init(struct perf_event_attr *attr); size_t hex_width(u64 v); int hex2u64(const char *ptr, u64 *val); void dump_stack(void); void sighandler_dump_stack(int sig); extern unsigned int page_size; extern int cacheline_size; extern int sysctl_perf_event_max_stack; Loading Loading
tools/perf/util/debug.c +31 −1 Original line number Diff line number Diff line Loading @@ -8,7 +8,9 @@ #include <stdio.h> #include <api/debug.h> #include <linux/time64.h> #ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #endif #include "cache.h" #include "color.h" #include "event.h" Loading Loading @@ -248,3 +250,31 @@ void perf_debug_setup(void) { libapi_set_print(pr_warning_wrapper, pr_warning_wrapper, pr_debug_wrapper); } /* Obtain a backtrace and print it to stdout. */ #ifdef HAVE_BACKTRACE_SUPPORT void dump_stack(void) { void *array[16]; size_t size = backtrace(array, ARRAY_SIZE(array)); char **strings = backtrace_symbols(array, size); size_t i; printf("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf("%s\n", strings[i]); free(strings); } #else void dump_stack(void) {} #endif void sighandler_dump_stack(int sig) { psignal(sig, "perf"); dump_stack(); signal(sig, SIG_DFL); raise(sig); }
tools/perf/util/debug.h +3 −0 Original line number Diff line number Diff line Loading @@ -56,4 +56,7 @@ int perf_debug_option(const char *str); void perf_debug_setup(void); int perf_quiet_option(void); void dump_stack(void); void sighandler_dump_stack(int sig); #endif /* __PERF_DEBUG_H */
tools/perf/util/util.c +0 −31 Original line number Diff line number Diff line Loading @@ -4,9 +4,6 @@ #include <api/fs/fs.h> #include <sys/mman.h> #include <sys/utsname.h> #ifdef HAVE_BACKTRACE_SUPPORT #include <execinfo.h> #endif #include <dirent.h> #include <inttypes.h> #include <signal.h> Loading Loading @@ -353,34 +350,6 @@ int hex2u64(const char *ptr, u64 *long_val) return p - ptr; } /* Obtain a backtrace and print it to stdout. */ #ifdef HAVE_BACKTRACE_SUPPORT void dump_stack(void) { void *array[16]; size_t size = backtrace(array, ARRAY_SIZE(array)); char **strings = backtrace_symbols(array, size); size_t i; printf("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf("%s\n", strings[i]); free(strings); } #else void dump_stack(void) {} #endif void sighandler_dump_stack(int sig) { psignal(sig, "perf"); dump_stack(); signal(sig, SIG_DFL); raise(sig); } unsigned long parse_tag_value(const char *str, struct parse_tag *tags) { struct parse_tag *i = tags; Loading
tools/perf/util/util.h +0 −3 Original line number Diff line number Diff line Loading @@ -80,9 +80,6 @@ void event_attr_init(struct perf_event_attr *attr); size_t hex_width(u64 v); int hex2u64(const char *ptr, u64 *val); void dump_stack(void); void sighandler_dump_stack(int sig); extern unsigned int page_size; extern int cacheline_size; extern int sysctl_perf_event_max_stack; Loading