Roll src/third_party/WebKit d9c6159:8139f33 (svn 201974:201975)
[chromium-blink-merge.git] / base / debug / stack_trace.cc
blobce9e9ad550090b70cf525f3d040d8482e11fb36e
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.
5 #include "base/debug/stack_trace.h"
7 #include "base/basictypes.h"
9 #include <string.h>
11 #include <algorithm>
12 #include <sstream>
14 namespace base {
15 namespace debug {
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;
24 StackTrace::~StackTrace() {
27 const void *const *StackTrace::Addresses(size_t* count) const {
28 *count = count_;
29 if (count_)
30 return trace_;
31 return NULL;
34 std::string StackTrace::ToString() const {
35 std::stringstream stream;
36 #if !defined(__UCLIBC__)
37 OutputToStream(&stream);
38 #endif
39 return stream.str();
42 } // namespace debug
43 } // namespace base