Avatar ·

Como obter e imprimir o stack trace atual em Java?

Olá, colegas! Comecei a programar em Java recentemente e me deparei com a seguinte situação: no meu aplicativo multithread, às vezes ocorrem bugs estranhos que são difíceis de detectar. Quero, em um determinado ponto do código, simplesmente ver de onde veio o fluxo de execução — ou seja, obter o stack trace (call stack) atual para entender a sequência de métodos que levaram a esse ponto.\n\nEu sei que quando ocorre uma exceção, podemos fazer `e.printStackTrace()`, mas e se não houver exceção e eu precisar apenas registrar o stack atual para debug? Por exemplo, quero adicionar essa diagnose no método `processOrder()` para entender quem o está chamando:\n\n```java\npublic class OrderService {\n public void processOrder(int orderId) {\n // Aqui quero obter o stack e registrar\n System.o