代号一:记录哪个代码正在调用另一个代码
Codename One: log which code is calling another code
此问题仅针对代号一。
短篇小说: 我正在调试一个奇怪的错误,该错误只出现在真实设备中,但不会出现在模拟器中。在特定情况下每秒调用一次方法,所以我怀疑是计时器。但是哪个计时器?要调查谁在调用此方法:
我启用了setEnableAsyncStackTraces(true)
(https://www.codenameone.com/blog/better-error-logging.html)
我在方法中插入了这个异常: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();
}
它没有应有的效率,但是日志不会更有效并且可能会被开发人员滥用。至少这看起来很糟糕,因此开发人员知道不要将其留在生产环境中。
此问题仅针对代号一。
短篇小说: 我正在调试一个奇怪的错误,该错误只出现在真实设备中,但不会出现在模拟器中。在特定情况下每秒调用一次方法,所以我怀疑是计时器。但是哪个计时器?要调查谁在调用此方法:
我启用了
setEnableAsyncStackTraces(true)
(https://www.codenameone.com/blog/better-error-logging.html)我在方法中插入了这个异常:
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();
}
它没有应有的效率,但是日志不会更有效并且可能会被开发人员滥用。至少这看起来很糟糕,因此开发人员知道不要将其留在生产环境中。