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 "base/basictypes.h" 8 9#include <string.h> 10 11#include <algorithm> 12#include <sstream> 13 14namespace base { 15namespace debug { 16 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 24StackTrace::~StackTrace() { 25} 26 27const void *const *StackTrace::Addresses(size_t* count) const { 28 *count = count_; 29 if (count_) 30 return trace_; 31 return NULL; 32} 33 34std::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