1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/debug/stack_trace.h" 6 7 #include <string.h> 8 9 #include <algorithm> 10 #include <sstream> 11 12 #include "base/macros.h" 13 14 namespace base { 15 namespace debug { 16 StackTrace(const void * const * trace,size_t count)17StackTrace::StackTrace(const void* const* trace, size_t count) { 18 count = std::min(count, arraysize(trace_)); 19 if (count) 20 memcpy(trace_, trace, count * sizeof(trace_[0])); 21 count_ = count; 22 } 23 ~StackTrace()24StackTrace::~StackTrace() { 25 } 26 Addresses(size_t * count) const27const void *const *StackTrace::Addresses(size_t* count) const { 28 *count = count_; 29 if (count_) 30 return trace_; 31 return NULL; 32 } 33 ToString() const34std::string StackTrace::ToString() const { 35 std::stringstream stream; 36 #if !defined(__UCLIBC__) 37 OutputToStream(&stream); 38 #endif 39 return stream.str(); 40 } 41 42 } // namespace debug 43 } // namespace base 44