假设Java Card小程序的process
方法中有一些方法,重要的是要知道特定的方法何时开始运行[=执行](即调用它时)以及何时开始运行结束。在这种情况下,有没有办法通知主机(读者/用户)方法调用和退出方法?
例如,在以下程序中,了解Method2
何时开始执行以及何时结束非常重要:
public void process(APDU apdu) throws ISOException {
if (selectingApplet()) {
return;
}
Method1(apdu);
Method2(apdu);
Method3(apdu);
}
答案 0 :(得分:2)
JavaCard没有内部时钟(因为智能卡内没有电池)。
要衡量Method2(apdu)
的执行时间,您应该:
Method2
并再次测量整个APDU。您可以以类似的方式找出Method2
的大致开始时间和结束时间(评论并测量差异)。遗憾的是,JavaCard代码的诊断绝非易事。
答案 1 :(得分:1)
Java Card中没有在线日志。因为它不是安装在您的Windows上的IDEA,以显示服务器日志,如sysout日志。 oncard和offcard应用程序之间唯一的通信方式是APDU。 有两种方式可以让你用它们来达到你想要的任何东西:
1)简单的方法。如果要测试Method2是否撕裂,只需对每种方法使用不同的指令。意味着对方法2使用InsX,如果applet使用InsX接收APDU,则调用Method2。现在您知道Method2何时正在调用,您可以并行测试撕裂。
2)您可以使用逻辑通道并使用多选小程序。在此解决方案中,您可以同时在可选模式下使用两个小程序,您可以使用其他小程序随时向您发送APDU。有关逻辑通道的更多信息,请参阅here。