代号一:记录哪个代码正在调用另一个代码

Codename One: log which code is calling another code

此问题仅针对代号一。

短篇小说: 我正在调试一个奇怪的错误,该错误只出现在真实设备中,但不会出现在模拟器中。在特定情况下每秒调用一次方法,所以我怀疑是计时器。但是哪个计时器?要调查谁在调用此方法:

  1. 我启用了setEnableAsyncStackTraces(true) (https://www.codenameone.com/blog/better-error-logging.html)

  2. 我在方法中插入了这个异常:throw new IllegalStateException("Who Is Calling me?");

之后,我发现是哪个定时器在调用我的方法。然而,这种调试方式并不总是可行,因为它迫使我插入一个使应用程序崩溃的异常。

你有什么建议吗?您认为像 Log.printAsyncStackTrace() 这样的新 API 在这些情况下有用吗?

谢谢

你可以这样使用:

try { 
   throw new RuntimeException("This is the caller");
} catch(RuntimeException e) {
   Log.e(e);
   Log.sendLogAsync();
}

它没有应有的效率,但是日志不会更有效并且可能会被开发人员滥用。至少这看起来很糟糕,因此开发人员知道不要将其留在生产环境中。