42 lines
866 B
C++
42 lines
866 B
C++
|
// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
||
|
// Use of this source code is governed by a BSD-style license that can be
|
||
|
// found in the LICENSE file.
|
||
|
|
||
|
#include "base/debug/stack_trace.h"
|
||
|
|
||
|
#include "base/basictypes.h"
|
||
|
|
||
|
#include <string.h>
|
||
|
|
||
|
#include <algorithm>
|
||
|
#include <sstream>
|
||
|
|
||
|
namespace base {
|
||
|
namespace debug {
|
||
|
|
||
|
StackTrace::StackTrace(const void* const* trace, size_t count) {
|
||
|
count = std::min(count, arraysize(trace_));
|
||
|
if (count)
|
||
|
memcpy(trace_, trace, count * sizeof(trace_[0]));
|
||
|
count_ = count;
|
||
|
}
|
||
|
|
||
|
StackTrace::~StackTrace() {
|
||
|
}
|
||
|
|
||
|
const void *const *StackTrace::Addresses(size_t* count) const {
|
||
|
*count = count_;
|
||
|
if (count_)
|
||
|
return trace_;
|
||
|
return NULL;
|
||
|
}
|
||
|
|
||
|
std::string StackTrace::ToString() const {
|
||
|
std::stringstream stream;
|
||
|
OutputToStream(&stream);
|
||
|
return stream.str();
|
||
|
}
|
||
|
|
||
|
} // namespace debug
|
||
|
} // namespace base
|