如何获得修复此错误的 Stacktrace?
Posted
技术标签:
【中文标题】如何获得修复此错误的 Stacktrace?【英文标题】:How can I get the Stacktrace of this error of fix it? 【发布时间】:2021-03-10 13:38:19 【问题描述】:嘿,我尝试在 Kotlin Hands 上使用 Ktor。但是使用“/”访问网页时出现问题。
embeddedServer(Netty, port)
install(FreeMarker)
templateLoader = ClassTemplateLoader(this::class.java.classLoader, "templates")
outputFormat = htmlOutputFormat.INSTANCE
routing
static("/static")
resources("files")
get("/")
call.respond(FreeMarkerContent("index.ftl", mapOf("entries" to blogEntries), ""))
.start(wait = false)
我使用的是我的代码。我找不到错误,控制台中只有这条消息:
[eventLoopGroupProxy-4-1] INFO ktor.application - Unhandled: GET - /, io failed
有没有人知道我该如何解决这个错误?
【问题讨论】:
我不知道这个库,但看起来它在内部处理了异常。该消息是一个非常标准的日志记录消息,如果您为项目配置了某种记录器,您可能会在那里找到堆栈跟踪。否则请查看图书馆的页面以获得社区支持,这可能是一个常见问题。 【参考方案1】:生成该消息的确切行在io.ktor.server.engine.logFailure
:https://github.com/ktorio/ktor/blob/2e1b0046e4235865da7cbbfbf2e887f410775278/ktor-server/ktor-server-host-common/jvm/src/io/ktor/server/engine/DefaultEnginePipeline.kt#L107
private fun ApplicationEnvironment.logFailure(call: ApplicationCall, cause: Throwable)
...
is IOException -> log.info("$status: $logString, io failed: $cause.message ?: "unknown error"")
...
在这一行添加一个断点。然后当您的应用程序失败时,cause
将包含真正的异常。
就我而言,这是 FreeMarker 模板中的错误。这很奇怪,因为通常这些异常会正常打印。这次它只打印了Unhandled: <route>, io failed
。
这似乎是 Ktor 中的一个错误:这些异常是在正常行为中抛出的,并且频繁到您不想要完整的堆栈跟踪。但有时(如本例)异常是不正常的,您确实需要堆栈跟踪。
【讨论】:
【参考方案2】:我建议使用CallLogging 功能和routes tracing 来解决您的问题。
【讨论】:
以上是关于如何获得修复此错误的 Stacktrace?的主要内容,如果未能解决你的问题,请参考以下文章
如何在Dart中获取当前的堆栈跟踪以获得Completer.CompleteException(exception,stackTrace);
在GWT 2.7中使用SuperDevMode时如何获得完整的StackTrace?
如何修复缺少的 API-MS-ONECOREUAP-SETTINGSYNC-STATUS-L1-1-0.DLL?