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)17 StackTrace::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()24 StackTrace::~StackTrace() {
25 }
26 
Addresses(size_t * count) const27 const void *const *StackTrace::Addresses(size_t* count) const {
28   *count = count_;
29   if (count_)
30     return trace_;
31   return NULL;
32 }
33 
ToString() const34 std::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