Кому-нибудь удалось когда-нибудь подключить отладчик к привязанному устройству? Я могу отлаживать свое приложение j2me в эмуляторе, но у меня много проблем с решением проблем, связанных с телефоном, когда они возникают. Я использую телефон Nokia N95, но в идеале процесс отладки будет работать на любом телефоне.
Это возможно? Если да, то есть ли у кого-нибудь шаги, которые они использовали для его настройки?





К сожалению, как правило, это невозможно. Некоторые производители (например, Sony-Erricson) поддерживают это на некоторых своих телефонах, но не на всех. Я не уверен, есть ли на устройстве инструмент для отладки N95, но вы можете использовать эмулятор Nokia, который должен быть довольно близко к устройству. Новый Java ME SDK обещает стать настоящим ODD в ближайшем будущем. Но все еще очень многое зависит от сотрудничества с OEM.
Телефоны Motorola поддерживают интерфейс отладки под названием KDWP (требуется регистрация в Motodev). Их инструмент MIDway также может быть полезен для получения информации трассировки отладки из мидлета, запущенного на устройстве.
Sony Ericsson поддерживает отладку на телефоне ebery по крайней мере с K700, это делается с помощью KDWP. Коммуникаторы UIQ 3 также могут быть отлажены таким же образом.
Кстати, в последних моделях телефонов от SE даже есть возможность отслеживать потребление памяти и профилирование процессора. Поэтому, если вы хотите отлаживать свои приложения на реальных телефонах, я бы посоветовал также использовать телефоны SE, они действительно хороши в этом. Я использую Netbeans, и он без проблем работает с любым телефоном SE.
Как уже было сказано, отладка устройства - это то, что строго зависит от воли производителя, и часто это практически невозможно. Тем не менее, я могу обратиться к вам по адресу Мобильная платформа Gear Java, который дает вам возможность использовать консоль отладки на устройстве для печати ваших сообщений и, таким образом, чтения проблем, связанных с телефоном. Если вам нужно объяснение, как его использовать, взгляните на этот учебник
Другие здесь правы в том, что отладка на устройстве очень сильно зависит от устройства. Я ничего не делал с Series 60, но, по крайней мере, на телефонах Series 40 мне пришлось открыть CommConnection и записать в него, чтобы увидеть большую часть происходящего. Эмуляторы устройств снова представляют собой смешанный пакет, но обычно вы можете получить 90% пути к вашему приложению, работая с ними, и обычно можете подключить к ним свой отладчик. Если вы не используете какое-либо оборудование телефона, это должно помочь вам в большинстве случаев.
Время от времени я использовал инструменты Blackberry для отладки приложений J2ME (без использования RIM API), но это очень медленно и по-прежнему является только эмуляцией, а не фактическим устройством (но иногда это помогает избавиться от лишнего). Я согласен, это разочаровывает, когда что-то работает на эмуляторе и обнаруживает, что это не работает на оборудовании.
Я думаю, что можно добавить дополнительную отладочную информацию на этапе предварительной обработки. Нравится:
public void myMethod() {
Debug.traceMethod("myMethod");
int var = 1;
Debug.newLine();
var++;
Debug.newLine();
...
}
Я считаю, что хороший метод отладки - это управление строковым значением, которое отображается поверх всего остального, если оно не равно нулю. Это будет работать где угодно, хотя, очевидно, не идеально, но может использоваться для перехвата исключений, печати значений и т. д. Конечно, вы ограничены маленьким экраном, но теоретически вы даже можете кодировать некоторые функции прокрутки.
Некоторые люди используют ведение журнала RMS, но лично меня это никогда не беспокоило.
Как здесь уже говорили другие, у Motorola есть Midway, что, на мой взгляд, здорово.
Вы не можете отлаживать пошагово, как Android или другой SDK.
В J2ME вы можете отследить ошибку, добавив оператор журнала в код и добавив еще один мидлет и отобразив этот экран журнала в этом мидлете.
Пример: добавить Log.p("Log statement.....");
LogMidlet.java
// Add the following line in the startup method of this midlet.
Log.getInstance().showLog();
Таким образом можно как-то отследить ошибку в j2me.