]>
git.proxmox.com Git - ceph.git/blob - ceph/src/arrow/java/memory/memory-core/src/main/java/org/apache/arrow/memory/util/StackTrace.java
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
18 package org
.apache
.arrow
.memory
.util
;
20 import java
.util
.Arrays
;
23 * Convenient way of obtaining and manipulating stack traces for debugging.
25 public class StackTrace
{
27 private final StackTraceElement
[] stackTraceElements
;
30 * Constructor. Captures the current stack trace.
33 // skip over the first element so that we don't include this constructor call
34 final StackTraceElement
[] stack
= Thread
.currentThread().getStackTrace();
35 stackTraceElements
= Arrays
.copyOfRange(stack
, 1, stack
.length
- 1);
39 * Write the stack trace to a StringBuilder.
41 * @param sb where to write it
42 * @param indent how many double spaces to indent each line
44 public void writeToBuilder(final StringBuilder sb
, final int indent
) {
45 // create the indentation string
46 final char[] indentation
= new char[indent
* 2];
47 Arrays
.fill(indentation
, ' ');
49 // write the stack trace in standard Java format
50 for (StackTraceElement ste
: stackTraceElements
) {
51 sb
.append(indentation
)
53 .append(ste
.getClassName())
55 .append(ste
.getMethodName())
57 .append(ste
.getFileName())
59 .append(Integer
.toString(ste
.getLineNumber()))
65 public String
toString() {
66 final StringBuilder sb
= new StringBuilder();
67 writeToBuilder(sb
, 0);