Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Если удивляет результат

Читайте также:
  1. D-эффект как результат настройки параметров градиентной сетки при ее создании
  2. I.1.1 Представление результатов в виде таблиц и графиков.
  3. II.3.2.2. Требования к результатам освоения адаптированной
  4. III ЭТАП: РЕЗУЛЬТАТЫ АНАЛИЗА
  5. III. Измерения и обработка результатов
  6. X. РЕЗУЛЬТАТЫ ЛАБОРАТОРНЫХ И СПЕЦИАЛЬНЫХ МЕТОДОВ ИССЛЕДОВАНИЯ
  7. А все то, о чем мы скажем вам, будет результатом?
  8. Анализ полученных результатов и расчет срока окупаемости системы
  9. Анализ результатов государственной экспертизы условий труда
  10. Анализ результатов обследования и разработка проекта реконструкции


Есть возможность запустить отладчик. Для этого существует jdb.
Сначала компилируем с ключом -g, чтобы у отладчика была информация.

 

javac -g -sourcepath./src -d bin src/com/qwertovsky/helloworld/HelloWorld.java

Запускаем отладчик

 

jdb -classpath bin -sourcepath src com.qwertovsky.helloworld.HelloWorld Initializing jdb... >

Отладчик запускает свой внутренний терминал для ввода команд. Справку по последним можно вывести с помощью команды help.
Указываем точку прерывания на 9 строке в классе Calculator

 

> stop at com.qwertovsky.helloworld.Calculator:9 Deferring breakpoint com.qwertovsky.helloworld.Calculator:9. It will be set after the class is loaded.

Запускаем на выполнение.

 

> run run com.qwertovsky.helloworld.HelloWorld Set uncaught java.lang.Throwable Set deferred uncaught java.lang.Throwable > VM Started: Set deferred breakpoint com.qwertovsky.helloworld.Calculator:9 Hello World! Breakpoint hit: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=9 bci=0 9 Adder adder=new Adder();

Чтобы соориентироваться можно вывести кусок исходного кода, где в данный момент находится курссор.

 

main[1] list 5 public class Calculator 6 { 7 public int sum(int... a) 8 { 9 => Adder adder=new Adder(); 10 for(int i:a) 11 { 12 adder.add(i); 13 } 14 return adder.getSum();

Узнаем, что из себя представляет переменная а.

 

main[1] print a a = instance of int[2] (id=340) main[1] dump a a = { 2, 3 } main[1] stop at com.qwertovsky.helloworld.operation.Adder:19 Deferring breakpoint com.qwertovsky.helloworld.operation.Adder:19. It will be set after the class is loaded.

Продолжим исполнение.

 

main[1] cont > Set deferred breakpoint com.qwertovsky.helloworld.operation.Adder:19 Breakpoint hit: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=19 bci=0 19 sum+=b; main[1] list 15 } 16 17 public void add(int b) 18 { 19 => sum+=b; 20 } 21 22 public int getSum() 23 { 24 return sum; main[1] print sum sum = 0 main[1] print b b = 2

Выполним код в текущей строке и увидим, что sum стала равняться 2.

 

main[1] step > Step completed: "thread=main", com.qwertovsky.helloworld.operation.Adder.add(), line=20 bci=10 20 } main[1] print sum sum = 2

Поднимемся из класса Adder в вызвавший его класс Calculator.

 

main[1] step up > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a)

Удаляем точку прерывания

 

main[1] clear com.qwertovsky.helloworld.operation.Adder:19 Removed: breakpoint com.qwertovsky.helloworld.operation.Adder:19 main[1] step > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=12 bci=30 12 adder.add(i);

Можно избежать захода в методы, используя команду next.

 

main[1] next > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=10 bci=36 10 for(int i:a) main[1] next > Step completed: "thread=main", com.qwertovsky.helloworld.Calculator.sum(), line=14 bci=42 14 return adder.getSum();

Проверяем значение выражения и завершаем выполнение.

 

main[1] eval adder.getSum() adder.getSum() = 5 main[1] cont > 2+3=5 The application exited

 




Дата добавления: 2015-09-11; просмотров: 11 | Поможем написать вашу работу | Нарушение авторских прав

Объявление класса | Примитивные типы данных | Вызов методов | Арифметические операторы и операторы присваивания | Использование циклов for | Циклы do | Взаимодействие с коллекциями | Перегрузка методов | Методы класса | Будьте открыты |


lektsii.net - Лекции.Нет - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав