Почему отладка лучше в IDE? [закрыто]

Для полноты, сочетание двух наиболее употребительных ответов ( 1 , 2 ) в Свифте:

override func willMoveToParentViewController(parent: UIViewController?) {
    super.willMoveToParentViewController(parent)
    if parent == nil {
        // view controller is popping
    }
}

142
задан Bill Karwin 9 January 2009 в 02:01
поделиться

22 ответа

Некоторые примеры некоторых способностей, которые отладчик IDE даст Вам по сообщениям трассировки в коде:

  • Представление стек вызовов в любом моменте времени, давая Вам контекст для Вашего текущего стекового фрейма.
  • Шаг в библиотеки , что Вы не в состоянии перекомпилировать в целях добавить трассировки (принимающий Вас имеют доступ к отладочным символам)
  • значения переменных Изменения , в то время как программа работает
  • Редактирование и продолжается - способность к [1 118] код изменения, в то время как это работает и сразу видит, что результаты изменения
  • В состоянии к [1 119] часы переменные, видя, когда они изменяются
  • Быть в состоянии к [1 120] пропуск или повторные разделы кода , видеть, как код будет работать. Это позволяет Вам проверять теоретические изменения прежде, чем сделать их.
  • Исследуют содержание памяти в режиме реального времени
  • Предупреждение Вы, когда бесспорный исключения выдаются, даже если они обрабатываются приложением.
  • Условное выражение, устанавливающее контрольные точки ; остановка приложения только при исключительных обстоятельствах, чтобы позволить Вам анализировать стек и переменные.
  • Представление контекст потока в многопоточных приложениях, которых может быть трудно достигнуть с трассировкой (поскольку трассировки от различных потоков будут чередованы в выводе).

, Таким образом, операторы печати (обычно) статичны , и необходимо будет перекомпилировать для получения дополнительной информации, если исходные операторы не были детализированы достаточно. IDE снимает этот статический барьер, давая Вам динамичный инструментарий под рукой.

, Когда я сначала начал кодировать, я не мог понять то, чем было грандиозное предприятие с отладчиками, и я думал, что мог достигнуть чего-либо с трассировкой (предоставленный, который был на Unix, и отладчик был GDB). Но как только Вы изучаете, как правильно использовать графический отладчик, Вы не хотите возвращаться к операторам печати.

105
ответ дан LeopardSkinPillBoxHat 9 January 2009 в 02:01
поделиться
  • 1
    MutationObservers являются очень новыми, но поддерживаются в очень недавнем WebKit и Firefox. Они - будущее событий модификации DOM хотя, и I' m счастливый видеть их включенный в этот ответ. ++ этот ответ –  12 June 2012 в 21:32

Это не просто отлаживает. IDE помогает Вам создать лучшее программное обеспечение быстрее большим количеством способов:

  • инструменты рефакторинга
  • intellisense, чтобы сделать API более поддающимся обнаружению, или напомнить о точном написании/случае знакомых объектов (не много использования при использовании той же системы в течение 15 лет, но это редко)
  • экономят на вводе путем автоматического заполнения имен переменной, и имена классов
  • находят определенные виды ошибок, прежде чем Вы даже начнете компилировать
  • Автоматически переход к объявлениям/определениям переменной/метода/класса, даже если они не находятся в том же файле или папке.
  • Повреждение на необработанном и обработанный исключения

я мог продолжить.

-2
ответ дан Joel Coehoorn 9 January 2009 в 02:01
поделиться

Этот ровный реальный вопрос от настоящего программиста?

Любой, кто провел даже 5 минут, отлаживая с операторами печати и отлаживая с IDE - он ПРОИЗОЙДЕТ с ним без ровного выяснения!

0
ответ дан 9 January 2009 в 02:01
поделиться

В дополнение к большой части того, что сказали другие плакаты, мне действительно нравится ступать через одну строку за один раз наряду с компьютером, поскольку это вынуждает меня думать об одной строке за один раз. Часто я буду ловить ошибку, даже не смотря на значения переменных просто, потому что я вынужден посмотреть на нее, поскольку я нажимаю кнопку 'следующей строки'. Однако я не думаю, что мой ответ поможет Вам, счету, потому что у Вас, вероятно, уже есть этот навык.

До изучения ресурсов идут, я не использовал никого - я просто исследую все меню и опции.

0
ответ дан Nate Parsons 9 January 2009 в 02:01
поделиться

Поскольку кто-то сказал выше: Отладчик! = IDE.

gdb и (назад в день) (автономные) TurboDebugger работают просто великолепно для языков, которые они поддерживают [редактор], спасибо. (или еще более старая технология: отладчик Clipper связался в сам xBase исполняемый файл) - ни один из них не потребовал IDE

кроме того, хотя C / ++ кодирование более редко, printf операторы иногда маска от самой ошибки, Вы пытаетесь найти! (проблемы инициализации в автоматическом Варе на стеке, например, или выделение памяти / выравнивание)

Наконец, как другие заявили, можно использовать обоих. Некоторые проблемы оперативного выхода почти требуют печати, или по крайней мере разумного "*video_dbg = (is_good? '+': '-')"; где-нибудь в видеопамять. Мой возраст показывает, это находилось под DOS:-)

TMTOWTDI

0
ответ дан 9 January 2009 в 02:01
поделиться
  • 1
    Я должен был упомянуть в своем ответе что " label" оцените должна быть ссылка на тот же объект в массиве. Другими словами, этот won' t работают также: ng-init =" {имя: ' John'} " – Mark Rajcok 12 January 2013 в 21:04

С отладчиком IDE Вы видите значения ВСЕХ переменных в текущей области (полностью стек вызовов) каждый раз, когда Вы останавливаете выполнение.

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

кроме того, много отладчиков IDE позволяют Вам ввести и оценить методы и оценить участников, в то время как Вы останавливаетесь, какие дальнейшие увеличения количество операторов печати необходимо было бы сделать.

я действительно чувствую, что отладчики лучше для некоторых языков, чем для других однако...

Мое общее мнение - то, что отладчики IDE абсолютно, удивительно замечательны для управляемых языков как Java или C#, довольно полезны для C++ и не очень полезны для языков сценариев как Python (но могло случиться так, что я просто еще не попробовал хороший отладчик ни за какие языки сценариев).

я абсолютно люблю отладчик в ИДЕЕ IntelliJ, когда я делаю разработку Java. Я просто использую операторы печати, когда я использую Python.

0
ответ дан TM. 9 January 2009 в 02:01
поделиться
  • отладчик А может присоединить к рабочему процессу

  • Часто легче отладить поточный код от отладчика

0
ответ дан Mitch Wheat 9 January 2009 в 02:01
поделиться

Это - то, что я использую больше всего на окнах отладки VS.NET:

  • Стек вызовов, который является также отличным способом выяснить чужой код
  • Местные жители & Часы.
  • окно Immediate, которое является в основном консолью C# и также позволяет мне изменить переменное содержание, инициализировать материал и т.д.
  • способность пропустить строку, установить следующий оператор, который будет выполняться где-то в другом месте.
  • способность нависнуть над переменными и иметь подсказку, показывающую мне их значения.

, Таким образом, это высказывает мне мнение на 360 градусов состояния моего кода выполнения, не только маленькое окно.

Никогда не находил книгу, преподавая этот вид материала, но с другой стороны, это, кажется, довольно просто, это - в значительной степени WYSIWYG.

1
ответ дан Community 9 January 2009 в 02:01
поделиться

Я лично чувствую, что ответ так прост, как "Интегрированный отладчик/IDE дает Вам богатство различной информации быстро без потребности в перфорации в команды. Информация имеет тенденцию быть там перед Вами без Вас, не имеют, говорят его, что показать Вам.

простота , в котором может быть получена информация, - то, что делает их лучше, чем просто отладка командной строки или отладка "printf".

1
ответ дан OJ. 9 January 2009 в 02:01
поделиться

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

Человеческие мозги являются только однопоточными, к сожалению.

1
ответ дан DarkwingDuck 9 January 2009 в 02:01
поделиться

Так как Вы попросили подсказки по книгам... Насколько отладка Windows идет, у John Robbins есть несколько выпусков хорошей книги по отладке Windows:

Приложения Отладки для Microsoft.NET и Примечание Microsoft Windows

, что новый выпуск ( Отладка Приложения Microsoft.NET 2.0 ) является.NET только, таким образом, Вы могли бы хотеть более старый (как в первой ссылке), если Вы хотите отладку собственного кода (это покрывает и.NET и собственный компонент).

1
ответ дан Michael Burr 9 January 2009 в 02:01
поделиться

Одна вещь, что я удивлен, что не видел в другом ответе, состоит в том, что 2 метода отладки не взаимоисключающие .

printf отладка может работать вполне приятно даже при использовании стандартного отладчика (ли базирующийся IDE или не). В особенности с платформой журналирования, таким образом, можно оставить все или большую часть в выпущенном продукте для помощи с диагностированием потребительских проблем.

, Как отмечено в в значительной степени всех других ответах здесь, ключевая хорошая вещь о стандартном отладчике состоит в том, что он позволяет Вам более легко исследовать (и потенциально изменяться) детали состояния программы. Вы не должны знать впереди, на что Вы могли бы хотеть посмотреть - это все доступно под рукой (более или менее).

2
ответ дан Michael Burr 9 January 2009 в 02:01
поделиться

Одна причина использовать IDE могла бы состоять в том, что современные IDE поддерживают больше, чем простые точки останова. Например, Visual Studio предлагает следующие усовершенствованные функции отладки:

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

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

2
ответ дан M4N 9 January 2009 в 02:01
поделиться
  • 1
    Вывод md5 будет иметь подструнным для предотвращения Целого числа Из ошибки диапазона. – Salman A. Kagzi 22 March 2012 в 06:22

Я не разрабатывал в течение почти 20 лет, но я нахожу, что использование IDE / отладчик могу:

  • видят все виды вещей, которые я, возможно, не думал для включения в оператор печати
  • шаг через код, чтобы видеть, соответствует ли это пути, я думал, что это взяло бы
  • переменные набора к определенным значениям, чтобы заставить код взять определенные ответвления
3
ответ дан Kevin Davis 9 January 2009 в 02:01
поделиться
  • 1
    Это определенно кажется обещанием; I' ve уже начал изучать его и it' s, скорее всего, что I' ll использовать (эти history.js подход кажется больше viable для получения его работающий быстро). Большое спасибо, приятель!:-) – Dr.Kameleon 13 August 2012 в 11:06

Первое, что пришло на ум:

  1. сложные объекты Отладки - Отладчики позволяют Вам ступать глубоко во внутренности объекта. Если Ваш объект будет иметь, скажем, массив массива сложных объектов, операторы печати только получат Вас до сих пор.
  2. способность ступить мимо кода - Отладчики также позволят Вам пропускать прошлый код, который Вы не хотите выполнять. Правда, Вы могли сделать это вручную также, но это - так намного больше кода, который необходимо ввести.
6
ответ дан Kevin Pang 9 January 2009 в 02:01
поделиться
  • операторы печати на всем протяжении Вашего кода уменьшает удобочитаемость.
  • Добавление и удаление их в целях отладки только трудоемкие
  • , Отладчики отслеживают стек вызовов, облегчающий видеть, где Вы
  • , Переменные могут быть изменены на лету
  • , Специальные команды могут быть выполнены во время паузы в выполнении для помощи, диагностирование
  • Может использоваться В СОЧЕТАНИИ С операторами печати: Отладка. Запишите ("... ")
14
ответ дан DarkwingDuck 9 January 2009 в 02:01
поделиться
  • 1
    @Jleagle, you' право ре:) Спасибо за сообщение мне, I' ve обновил ссылку с различной. – Adi 13 August 2012 в 11:28

Вот одна вещь, которую Вы определенно не можете отладить с оператором "печати", который является, когда клиент приносит Вам дамп памяти и говорит "Вашу разрушенную программу, можно ли сказать мне почему?"

16
ответ дан galets 9 January 2009 в 02:01
поделиться
  • 1
    Парни спасибо, это привело встреченный к решению. В моем случае целый DLL отсутствовал в нашем сервере.. На основе моего опыта WebPages 1.0 установлен наряду с MVC3 (если Вы didn' t имеют его немного ранее), в то время как there' s отдельный пакет для WebPages 2.0 в установке MVC4. Удостоверьтесь, что Вы устанавливаете правильную версию that' s ссылаемый в Вашем web.config. – army 29 August 2013 в 08:01
  • отладчик IDE позволяет Вам изменить значения переменных во времени выполнения.

  • отладчик IDE позволяет Вам видеть значение переменных, Вы не знали, что хотели видеть, когда выполнение началось.

  • отладчик IDE позволяет Вам видеть стек вызовов и исследовать состояние переданных странных значений функции. (думайте, что эта функция вызвана от сотен мест, Вы не знаете, куда эти странные значения прибывают из)

  • , отладчик IDE позволяет Вам условно повредить выполнение в любой точке в коде, на основе условия, не номера строки.

  • отладчик IDE позволит Вам исследовать состояние программы в случае необработанного исключения вместо того, чтобы просто гадить.

34
ответ дан recursive 9 January 2009 в 02:01
поделиться
  • 1
    Это решение работало на меня. Я встретился с проблемой, когда я изменил Целевую Платформу с 3,5 до 4,0. 2010 VS пытался быть полезным и обновить ASP.NET MVC от 2,0 до 4,0, который вызвал очень много главных болей. Просто удаление Системы. Сеть. Ссылка Mvc и добавление версии 2 одна спина устранили проблему. – jason 16 October 2013 в 16:30

Преимущества отладчика по printf ( примечание не отладчик IDE, но любой отладчик )

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

  2. Могут отладить двоичный файл, который Вы не можете перекомпилировать в данный момент

  3. , Может отладить двоичный файл, который занимает много времени для перекомпиляции

  4. , Может заменить переменные на лету

  5. , Может вызвать функции на лету

  6. , не имеет проблемы, где отладка statemenets не сбрасывается, и следовательно синхронизирующий проблему не может быть отлаженная справка отладчиков acuratly

  7. с дампами ядра, операторы печати не делают'

1
ответ дан hhafez 9 January 2009 в 02:01
поделиться

Я думаю, отлаживая использующий операторы печати, потерянное искусство, и очень важный для каждого разработчика для изучения. Как только Вы знаете, как сделать это, определенные классы ошибок становятся намного легче отладить тот путь, чем через IDE. У программистов, которые знают эту технику также, есть действительно хорошее чувство того, что является полезной информацией, чтобы вставить сообщение журнала (не говоря уже о, Вы на самом деле закончите тем, что читали журнал) для неотладки целей также.

Однако действительно необходимо знать, как использовать неродной через отладчик, с тех пор для различного класса ошибок это - легче ПУТЬ. Я оставлю его до других превосходных ответов уже отправленным для объяснения почему:)

9
ответ дан rmeador 9 January 2009 в 02:01
поделиться
  • 1
    Верный @Jleagle. Но пример, данный относительно history.js работы как очарование - так, в основном никакая потребность в любом другом примере.;-) – Dr.Kameleon 13 August 2012 в 11:20

Я использовал для отладки и печатные формы, и IDE, и я бы предпочел отладку с помощью IDE. Единственный случай, когда это не работает, - это критические ситуации (например, отладка онлайновых игр), когда вы засоряете код операторами печати, а затем смотрите на файлы журнала после того, как все пошло ужасно неправильно. Затем, если вы все еще не можете разобраться, добавляете больше отпечатков и повторяете.

0
ответ дан 23 November 2019 в 22:55
поделиться

Просто хотел упомянуть полезную особенность консольного отладчика по сравнению с printf и отладчиком в IDE.

Вы можете подключиться к удаленному приложению (очевидно, скомпилированному в режиме DEBUG) и просмотреть его состояние, сбрасывая вывод отладчика в файл с помощью утилиты POSIX tee. По сравнению с printf, вы можете выбирать, куда выводить состояние во время выполнения программы.

Это очень помогло мне, когда я отлаживал приложения Adobe Flash, развернутые в агрессивной среде. Вам просто нужно определить некоторые действия, которые выводят требуемое состояние в каждой точке останова, запустить консольный отладчик командой fdb | tee output.log и пройтись по некоторым точкам останова. После этого вы можете распечатать журнал и проанализировать информацию путем тщательного сравнения состояния в разных точках останова.

К сожалению, эта возможность [запись в файл] редко доступна в отладчиках GUI, что заставляет разработчиков сравнивать состояние объектов в голове.

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

0
ответ дан 23 November 2019 в 22:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: