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

时间:2019-05-24 20:15:07

标签: codenameone

此问题仅涉及代号One。

短故事:我正在调试一个奇怪的错误,该错误仅在实际设备中发生,而在模拟器中不发生。有一种在特定情况下每秒调用一次的方法,因此我怀疑有一个计时器。但是哪个计时器?要调查谁在调用此方法:

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

  2. 我在方法throw new IllegalStateException("Who Is Calling me?");

  3. 中插入了此异常

之后,我发现哪个计时器正在调用我的方法。但是,这种调试方式并不总是那么实用,因为它迫使我插入一个使应用程序崩溃的异常。

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

谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用以下内容:

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

它没有达到应有的效率,但是日志的效率不会更高,并且可能会被开发人员滥用。至少这看起来已经够糟了,所以开发人员知道不要将其留在生产中。