You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kotlin中打印调用栈?

Kotlin打印调用栈的几种实用方法

在Kotlin里打印调用栈有几种简单直接的方式,根据你的需求选择即可:

  • 利用当前线程的栈轨迹
    直接获取当前线程的stackTrace数组,遍历打印每个栈帧信息,每个元素包含类名、方法名、文件名和行号:

    fun printCallStack() {
        Thread.currentThread().stackTrace.forEach {
            println(it)
        }
    }
    

    如果不想包含当前打印方法本身的栈帧,可以用drop(1)过滤掉第一个元素:

    fun printCallStack() {
        Thread.currentThread().stackTrace.drop(1).forEach {
            println(it)
        }
    }
    
  • 通过Throwable对象打印
    创建一个Throwable实例,调用它的printStackTrace()方法,默认会把栈信息输出到标准错误流:

    fun printCallStack() {
        Throwable().printStackTrace()
    }
    

    要是想把栈信息输出到文件或者其他输出流,用带参数的重载方法:

    fun printCallStackToFile() {
        val writer = java.io.PrintWriter("call_stack.txt")
        Throwable().printStackTrace(writer)
        writer.close()
    }
    
  • 在异常处理中打印
    如果是在捕获异常的场景下,直接调用异常对象的printStackTrace()就行,这时候的栈信息会包含异常触发点的完整调用链:

    try {
        // 这里写可能抛出异常的代码
        throw RuntimeException("测试异常")
    } catch (e: Exception) {
        e.printStackTrace()
    }
    

内容的提问来源于stack exchange,提问作者刘路扬

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 16:19:58