Java卡中某个方法执行的开始时间和结束时间有什么办法可以通知宿主?

Is there any way to inform the host starting time and ending time of a method execution in Java Card?

假设在Java卡片小程序的process方法中有一些方法并且知道特定的方法何时开始运行[=执行对你来说很重要](即调用时间)和结束时间。这种情况,有什么方法可以在方法调用和方法退出的时候通知host(reader/user)吗?

例如,在下面的程序中,知道 Method2 何时开始执行以及何时结束对我来说很重要:

public void process(APDU apdu) throws ISOException {
    if (selectingApplet()) {
        return;
    }
    Method1(apdu);
    Method2(apdu);
    Method3(apdu);
}

JavaCard 没有内部时钟(因为你的智能卡里面没有电池)。

要测量 Method2(apdu) 的执行时间,您应该:

  1. 在reader.
  2. 中测量整个APDU执行时间
  3. 注释掉Method2并再次测量整个APDU。
  4. 比较结果。

你可以用类似的方法找出Method2的大概开始时间和结束时间(注释掉测差)。不幸的是,JavaCard 代码的诊断绝非易事。

Java 卡片中没有在线日志。因为它不是安装在您的 windows 上的 IDEA 来向您显示服务器日志,例如 sysout 日志。 oncard 和 offcard 应用程序之间唯一的通信方式是 APDU。 有两种方法可以使用它们来达到你想要的任何目的:

1) 简单的方法。如果您想测试方法 2 的撕裂性,只需对每种方法使用不同的说明。意味着将 InsX 用于 Method2,如果小程序收到带有 InsX 的 APDU,则调用 Method2。现在您知道 Method2 何时调用,您可以并行测试撕裂。

2) 您可以使用逻辑频道并使用多选小程序。在此解决方案中,您可以同时拥有两个处于可选模式的小程序,您可以随时使用其他小程序向您发送 APDU。有关逻辑通道的更多信息,请参阅 here.