Codename One: регистрировать, какой код вызывает другой код - PullRequest
1 голос
/ 24 мая 2019

Этот вопрос относится только к кодовому имени 1.

Краткая история: Я отлаживаю странную ошибку, которая возникает только в реальных устройствах, но не вТренажер.Есть метод, который вызывается каждую секунду при определенных обстоятельствах, поэтому я подозревал, что это таймер.Но какой таймер?Чтобы выяснить, кто вызывает этот метод:

  1. Я включил setEnableAsyncStackTraces(true) (https://www.codenameone.com/blog/better-error-logging.html)

  2. Я вставил это исключение в метод: throw new IllegalStateException("Who Is Calling me?");

После этого я обнаружил, какой таймер вызывает мой метод, однако этот способ отладки не всегда оправдан, поскольку вынуждает меня вставить исключение, которое приводит к сбою приложения.

У вас есть предложение? Считаете ли вы, что новый API, такой как Log.printAsyncStackTrace(), может быть полезен в этих случаях?

Спасибо

1 Ответ

1 голос
/ 25 мая 2019

Вы можете использовать что-то вроде этого:

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

Это не так эффективно, как следовало бы, но журнал не будет намного более эффективным и может быть использован разработчиками.По крайней мере, это выглядит достаточно плохо, поэтому разработчики знают, чтобы не оставлять его в производстве.

...