c# - Kotlin 中是否有相当于 C# 的 DebuggerStepThrough 的功能?

标签 c# kotlin debugging intellij-idea

我在 Kotlin 中制作了一个事件系统,可以在其中监听和广播事件,类似于 C# 中事件的工作方式。

要广播事件,我有以下行:

playerConnected.broadcast(player)

这里playerConnected是事件并且 player是上下文对象。

在 IntellIJ 中调试时,当“单步执行”广播函数以查看事件监听器执行的操作时,它会单步执行 broadcast()函数,这是有道理的,它看起来像这样:

fun broadcast(args: T) {
    for (listener in listeners) {
        try {
            listener.accept(args)
        } catch (e: Exception) {
            e.printStackTrace()
        }
    }
}

我有兴趣跳过进入 broadcast()而是直接进入每个 accept()函数,其中 listenerConsumer<T> .

在 C# 中,我可以通过添加 DebuggerStepThroughAttribute 来解决这个问题到broadcast()功能。

Kotlin 中是否有任何等效属性或 IntelliJ 中实现相同功能的其他方法?

最佳答案

如果您的目标是 JVM,并且broadcast 是类的方法,则可以将调试器设置为忽略整个类。

转到 IntelliJ IDEA 的设置、构建、执行、部署 > 调试器 > 单步执行。

在“Java”部分,您可以添加一个您希望它忽略的类:

enter image description here

点击“+”按钮后,您可以搜索broadcast所在的类。添加该类后,整个类将被忽略。


如果您不希望它忽略整个类,这里​​有一个可能有效的“技巧”。将broadcast重写为扩展函数在单独的文件中。假设您的文件名为 Foo.kt。这实际上会转换为一个名为 FooKt 的 Java 类,当您在“要忽略的类列表”对话框中搜索它时,它就会显示出来。当然,并不是所有的方法都可以重写为扩展函数,并且将它们重写为扩展函数并不总是有意义,所以这并不总是有效:(

关于c# - Kotlin 中是否有相当于 C# 的 DebuggerStepThrough 的功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66611602/

相关文章:

c# - 正则表达式 : single word

c# - 如何通过 C# 在 Outlook 中创建一组联系人文件夹

ios - 如何在 KMM 项目中处理来自 PHPickerViewController 的回调?

bash - 如何删除终端中 ip 地址的最后一个八位字节?

c# - 遍历单词列表并搜索文件夹以查找包含该单词的文件

c# - 显示小数点后 6 位小数

android - 如何从android中的viewmodel调用baseactivity函数

Android Kotlin lint 没有警告结果

javascript - firebug:断点和 contentEditable 奇怪的行为

debugging - 更改对象在调试器/检查器变量值表中的显示方式