| Index: base/debug/stack_trace.h
|
| diff --git a/base/debug/stack_trace.h b/base/debug/stack_trace.h
|
| index 07e119a16b4a255dc443acf28c37d0c5cefa25c2..23e7b5164b63472409a92e992c5c1095dfa48d26 100644
|
| --- a/base/debug/stack_trace.h
|
| +++ b/base/debug/stack_trace.h
|
| @@ -22,6 +22,14 @@ struct _EXCEPTION_POINTERS;
|
| struct _CONTEXT;
|
| #endif
|
|
|
| +#if defined(OS_POSIX) && ( \
|
| + defined(__i386__) || defined(__x86_64__) || \
|
| + (defined(__arm__) && !defined(__thumb__)))
|
| +#define HAVE_TRACE_STACK_FRAME_POINTERS 1
|
| +#else
|
| +#define HAVE_TRACE_STACK_FRAME_POINTERS 0
|
| +#endif
|
| +
|
| namespace base {
|
| namespace debug {
|
|
|
| @@ -93,6 +101,20 @@ class BASE_EXPORT StackTrace {
|
| size_t count_;
|
| };
|
|
|
| +#if HAVE_TRACE_STACK_FRAME_POINTERS
|
| +// Traces the stack by using frame pointers. This function is faster but less
|
| +// reliable than StackTrace. It should work for debug and profiling builds,
|
| +// but not for release builds (although there are some exceptions).
|
| +//
|
| +// Writes at most |max_depth| frames (instruction pointers) into |out_trace|
|
| +// after skipping |skip_initial| frames. Note that the function itself is not
|
| +// added to the trace so |skip_initial| should be 0 in most cases.
|
| +// Returns number of frames written.
|
| +BASE_EXPORT size_t TraceStackFramePointers(const void** out_trace,
|
| + size_t max_depth,
|
| + size_t skip_initial);
|
| +#endif // HAVE_TRACE_STACK_FRAME_POINTERS
|
| +
|
| namespace internal {
|
|
|
| #if defined(OS_POSIX) && !defined(OS_ANDROID)
|
|
|