Разное

Debug режим – Как включить режим отладки (debug)?

11.05.2017

Содержание

debug — Википедия

Материал из Википедии — свободной энциклопедии

Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 октября 2014; проверки требуют 11 правок. Текущая версия страницы пока не проверялась опытными участниками и может значительно отличаться от версии, проверенной 19 октября 2014; проверки требуют 11 правок.

debug — Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Использовалась при операционной системе DOS. Под более поздние версии операционных систем работает через эмулятор DOS и имеет ограниченные возможности. Также иногда называют процесс отладки программы.

Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложения под DOS и отслеживать их работу. Данный отладчик находится на самом низком уровне компиляторов assembler. Но обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.

Запуск отладчика[править | править код]

Программа вызывается через командную строку:

DEBUG

DEBUG [[диск:][путь]имя_файла [параметры]]

DEBUG C:\мойпуть\My.com

Работа с файлами[править | править код]

КомандаОписаниеПример
-N-N Путь_Имя_Файла. С помощью этой команды можно загружать и сохранять файлы. Сокращённо от слова Name.-N My.com [Нажать Enter]
-LЗагрузка файла. Сокращённо от слова Load.-N My.com [Нажать Enter]
-L [Нажать Enter]
-W-W Путь_Имя_Файла. Сохранить файл. Сокращённо от слова Write.-N My.com [Нажать Enter]
-W [Нажать Enter]
 Writing Число_Байт bytes

Отображение и изменение значений регистров[править | править код]

КомандаОписаниеПример
-RВыдаёт содержание всех регистров.-R [Нажать Enter]
  AX=D3E0 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000  
DS=16BB ES=16BB SS=16BB CS=16BB IP=0100 NV UP DI PL NZ NA PO NC
15A3:0100 30C0 XOR AL,AL
-R [регистр]Просмотр регистра и запись нового значения в регистр.-R AX [Нажать Enter]
 AX 0000  
666 [Нажать Enter]

Дамп памяти[править | править код]

КомандаОписаниеПример
-DВыдаёт содержимое памяти. Сокращённо от слова Dump.-D [Нажать Enter]
-D [Начало_Сегмента] L [Конец_Сегмента]Выдаёт содержимое памяти от начального сегмента до конечного сегмента.
Чтобы вывести всю память нужно ввести -D 0 L 0 [Нажать Enter]
-D 0000 L 0005 [Нажать Enter]
 1814:0000 CD 20 FF 9F 00

Дизассемблирование[править | править код]

КомандаОписаниеПример
-UКоманда преобразования кода в инструкции ассемблера. Сокращённо от слова Unassemble.-U [Нажать Enter]
1814:0100 ADD [BX+SI],AL
1814:0102 XOR AL,00

Ассемблирование[править | править код]

КомандаОписаниеПример
-AПреобразования инструкции ассемблера в машинный код. Сокращённо от слова Assemble.-A [Нажать Enter]
1814:0100 MOV AX,0009
1814:0103 [Вводим_Дальше] [Нажать Enter]

Компиляция[править | править код]

КомандаОписаниеПример
-GЗапуск исполнения программы. Сокращённо от слова Go.-G [Нажать Enter]
 Program terminated normally
-G =[Адрес_Начала_Работы]Начиная с этого адреса начинается компиляция.-G =100
-G [Адрес_Брейкпоинта] [Адрес_Брейкпоинта] …Программа запускается и выполняется пока не дойдёт до брейкпоинта
после чего она остановится и выведет значения регистров для продолжения
работы необходимо нажать -G. Максимальное число брейкпоинтов 10.
-G 176 47d 537 647 [Нажать Enter]

Трассировка[править | править код]

КомандаОписаниеПример
-TКоманда имеет сходство с командой (-G) Go, но отличается тем что
выводит значения регистров после каждой инструкции. Сокращённо от слова Trace.
-T [Нажать Enter]
-T =[Адрес_Начала_Работы] [Количество_Инструкций]Дополнительно указывает с какого адреса запускаться программе
и количество исполняемых инструкций.
-T =100 5[Нажать Enter]

Утилитой debug можно было редактировать двоичные файлы, в той среде, где установлен только DOS и больше ничего. Еще её можно было использовать и для редактирования секторов дисков, например, чтобы излечить компьютер от boot-вирусов эпохи DOS.

ru.wikipedia.org

Режим отладки 1С сервера или как включить Debug

Тема включения режима отладки на сервере 1С весьма актуальна, по ней в сети Интернет написано много интересных статей, но большинство из них не полностью решают проблему. Если перед тобой стоит задача включения режима отладки на сервере 1С, то эта статья несомненно поможет в этом!

Из официальных источников мы имеем следующую информацию:

Выдержка из документа «Клиент-серверный вариант. Руководство администратора»

/debug

Запуск кластера серверов в режиме отладки конфигураций. Параметр указывает, с использованием какого протокола будет функционировать отладчик на данном кластере серверов:

  • -tcp ‑ протокол TCP/IP;
  • -http ‑ протокол HTTP.

Значение по умолчанию: -tcp.

СОВЕТ. В связи с тем, что в режиме отладки производительность сервера падает, рекомендуется использовать отладочный режим только для тех серверов, на которых выполняется отладка.

/debugServerAddr

ВАЖНО! Выдержка взята с сайта its.1c.ru.

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

Допустим, ты отвечаешь за ИТ инфраструктуру и к тебе подходит программист 1С, чтобы попросить запустить 1С в режиме отладки.

Поздравляю! Программист 1С не является доменным администратором и не смог произвести настройку самостоятельно. Вопросы безопасности и чувства самосохранения не на последнем месте.

1С в серверном варианте требует комплексного подхода, который достигается наличием достаточных компетенций у специалистов из разных направлений – программист 1С, системный администратор, администратор баз данных.

И когда речь уже заходит об отладке приложения, универсальные солдаты «тыжсисадмин» и «тыжпрограммист» уже не актуальны. На данном уровне навыки для системного администратора и программиста 1С сильно разнятся и совмещать их, оставаясь профессионалом с большой буквы «П», уже невозможно.

Как запустить сервер 1С в режиме отладки правильно?

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

Есть несколько вариантов, но рассмотрим самый ходовой – изменение значения параметра реестра Windows.

  1. Открываем реестр на сервере, где установлен сервер 1С.

  2. Переходи по следующему пути:

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (x86-64)

    Имя раздела может отличаться в зависимости от версии сервера 1С – 8.2 / 8.1 или его архитектуры – 32 / 64 битный.

  3. Здесь нас интересует параметр ImagePath, а точнее его значение, которое и надо дополнить ключом «debug».

    ПРИМЕЧАНИЕ! В разных статьях указаны различные варианты запуска режима отладки и это может ввести в заблуждение. Ключ «debug» можно добавлять в любое место после «C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe» и использовать как знак «-», так и «/».

    Например, будут одинаково работать:

    «C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe» -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files\1cv8\srvinfo» -debug

    и

    «C:\Program Files\1cv8\8.3.13.1644\bin\ragent.exe» /debug -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d «C:\Program Files\1cv8\srvinfo»

    Первый вариант смотрится предпочтительней.

    На выходе должно получиться следующее:

  4. Перезапускаем службу «Агент сервера 1С:Предприятия 8.3 (x86-64)».

Поздравляю – режим отладки включен!

Осталось проверить его работу.

Самый простой способ проверки работы режима отладки 1С на сервере

Настраиваем фаервол.

Если платформа 1С для проведения отладки будет запускаться не на сервере 1С, на стороне клиента должны быть открыты TCP и UDP порты для диапазона 1560-1591.

На стороне сервера должны быть открыты TCP порты 1540, 1541, 1560-1591.

ПРИМЕЧАНИЕ! Эти порты устанавливаются по умолчанию, если вы их меняли, то в фаерволе надо будет открыть новые.

Проверяем работу отладчика:

  1. Запускаем конфигуратор.
  2. Заходим в меню «Отладка» — «Начать отладку» или нажимаем клавишу «F5». Запустится платформа 1С в режиме предприятия.
  3. Не закрывая 1С предприятие, переходим в меню «Отладка» — «Подключение…».

Если столбец «Тип» заполнен значением «Сервер», то всё работает. Идём писать письмо программисту 1С.

ПРИМЕЧАНИЕ! Если сервер и клиент – не один сервер, ставим галочку «Искать предметы отладки на удаленном компьютере»: и указываем сервер 1С.

В блоке «Доступные предметы отладки:» столбец «Тип» должен быть заполнен значением «Сервер». Если у вас так, то всё работает.

Арендуя сервер для 1С в компании МАРС Телеком, вы всегда сможете получить помощь наших технических специалистов по этому и другим вопросам.


marstel.ru

c++ — c# и debug режим

Stack Overflow на русском

Loading…

  1. 0
  2. +0
    • Тур Начните с этой страницы, чтобы быстро ознакомиться с сайтом
    • Справка Подробные ответы на любые возможные вопросы
    • Мета Обсудить принципы работы и политику сайта
    • О нас Узнать больше о компании Stack Overflow
    • Бизнес Узнать больше о поиске разработчиков или рекламе на сайте
  3. Войти Регистрация
  4. текущее сообщество

    • Stack Overflow на русском справка чат

ru.stackoverflow.com

Debug — это… Что такое Debug?

Debug — Программа-отладчик, которую используют для проверки и отладки выполняемых файлов. Использовалась при операционной системе MS-DOS. Под более поздние версии операционных систем работает через эмулятор MS-DOS и имеет ограниченные возможности.

Назначение

Данная программа является консольным приложением и предназначена для создания или изменения кода файлов. С помощью неё можно создавать простые приложение под MS-DOS и отслеживать их работу. Данный отладчик находится на самом низком уровне компиляторов assembler. Но обладает неплохими возможностями такими как просмотр, изменение памяти и получение состояния регистров.

Команды

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

Программа вызывается через командную строку:

DEBUG

DEBUG [[диск:][путь]имя_файла [параметры]]

DEBUG C:\мойпуть\My.com

Работа с файлами

КомандаОписаниеПример
-N-N Путь_Имя_Файла. С помощью этой команды можно загружать и сохранять файлы. Сокращённо от слова Name.-N My.com [Нажать Enter]
-LЗагрузка файла. Сокращённо от слова Load.-N My.com [Нажать Enter]
-L [Нажать Enter]
-W-W Путь_Имя_Файла. Сохранить файл. Сокращённо от слова Write.-N My.com [Нажать Enter]
-W [Нажать Enter]
 Writing Число_Байт bytes

Отображение и изменение значений регистров

КомандаОписаниеПример
-RВыдаёт содержание всех регистров.-R [Нажать Enter]
  AX=D3E0 BX=0000 CX=0000 DX=0000 SP=FFFE BP=0000 SI=0000 DI=0000  
DS=16BB ES=16BB SS=16BB CS=16BB IP=0100 NV UP DI PL NZ NA PO NC
15A3:0100 30C0 XOR AL,AL
-R [регистр]Просмотр регистра и запись нового значения в регистр.-R AX [Нажать Enter]
 AX 0000  
666 [Нажать Enter]

Дамп памяти

КомандаОписаниеПример
-DВыдаёт содержимое памяти. Сокращённо от слова Dump.-D [Нажать Enter]
-D [Начало_Сегмента] L [Конец_Сегмента]Выдаёт содержимое памяти от начального сегмента до конечного сегмента.
Чтобы вывести всё память нужно ввести -D 0 L 0 [Нажать Enter]
-D 0000 L 0005 [Нажать Enter]
 1814:0000 CD 20 FF 9F 00

Дизассемблирование

КомандаОписаниеПример
-UКоманда преобразования кода в инструкции ассемблера. Сокращённо от слова Unassemble.-U [Нажать Enter]
 1814:0100 ADD [BX+SI],AL 
1814:0102 XOR AL,00

Ассемблирование

КомандаОписаниеПример
-AПреобразования инструкции ассемблера в машинный код. Сокращённо от слова Assemble.-A [Нажать Enter]
1814:0100 MOV AX,0009
1814:0103 [Вводим_Дальше] [Нажать Enter]

Компиляция

КомандаОписаниеПример
-GЗапуск исполнения программы. Сокращённо от слова Go.-G [Нажать Enter]
 Program terminated normally
-G =[Адрес_Начала_Работы]Начиная с этого адреса начинается компиляция.-G =100
-G [Адрес_Брейкпоинта] [Адрес_Брейкпоинта] …Программа запускается и выполняется пока не дойдёт до брейкпоинта
после чего она остановится и выведет значения регистров да продолжения
работы необходимо нажать -G. Максимальное число брейкпоинтов 10.
-G 176 47d 537 647 [Нажать Enter]

Трассировка

КомандаОписаниеПример
-TКоманда имеет сходство с командой (-G) Go, но отличается тем что
выводит значения регистров поле каждой инструкции. Сокращённо от слова Trace.
-T [Нажать Enter]
-T =[Адрес_Начала_Работы] [Количество_Иструкций]Дополнительно указывает с какого адреса запускаться программе
и количество исполняемых инструкций.
-T =100 5[Нажать Enter]

См. также

Примечания

Ссылки

  Общие команды MS-DOS и Windows
Append • Attrib • Break • Call • Cd • Chcp • Chdir • Chkdsk • Cls • Command • Copy • Date • Debug • Defrag • Del • Dir • Diskcomp • Diskcopy • Doskey • Echo • Edit • Edlin • Erase • Exit • Expand • Fastopen • Fc • Find • For • Format • Goto • Graphics • Help • If • Label • Loadfix • Md • Mem • Mkdir • Mode • More • Move • Nlsfunc • Path • Pause • Print • Prompt • Rd • Rem • Ren • Rename • Replace • Rmdir • Set • Setver • Share • Shift • Sort • Subst • Time • Tree • Type • Ver • Verify • Vol • Xcopy
См. также

dal.academic.ru

Урок №6. Режимы конфигурации «Debug» и «Release» | Уроки С++

  Обновл. 21 Фев 2019  | 

Конфигурация сборки (англ. «build configuration») – это набор настроек проекта, которые определяют принцип его построения. Конфигурация сборки состоит из: имени исполняемого файла, директории исполняемого файла, в каких директориях IDE будет искать код и заголовочные файлы, информации об отладке и параметров оптимизации вашего проекта.

Интегрированная среда разработки имеет две конфигурации сборки: «Release» (Релиз) и «Debug» (Отладка).

Конфигурация «Debug» предназначена для отладки вашей программы. Эта конфигурация отключает все настройки по оптимизации, включает информацию об отладке, что делает ваши программы больше и медленнее, но упрощает проведение отладки. Режим «Debug» обычно используется в качестве конфигурации по умолчанию.

Конфигурация «Release» используется для сборки программы для её дальнейшего выпуска. Программа оптимизируется по размеру и производительности и не содержит дополнительную информацию об отладке.

Например, исполняемый файл программы «Hello, World!» из предыдущего урока, созданный в конфигурации «Debug», у меня занимал 65 KB, в то время как исполняемый файл, построенный в конфигурации «Release», занимал всего лишь 12 KB.

Переключение между режимами «Debug» и «Release» в Visual Studio

Самый простой способ изменить конфигурацию проекта – выбрать соответствующую из выпадающего списка на панели быстрого доступа:

Переключение между режимами «Debug» и «Release» в Code::Blocks

В Code::Blocks на панели быстрого доступа есть также выпадающий список, где вы можете выбрать соответствующий режим конфигурации:

Заключение

Используйте конфигурацию «Debug» при разработке программ, а конфигурацию «Release» при их выпуске (когда уже будете готовы представить программу на всеобщее обозрение).


Оценить статью:

Загрузка…

За репост +20 к карме и моя благодарность!

ravesli.com

Активация Режима Разработчика / Debug Mode Enable [1.2.9] — Читы

Скачать новые патчи, Вы так же можете из данной темы на форуме:

forums.playground.ru/car_mechanic_simulator_2018..

  • Скачайте файл
  • Распакуйте архив
  • Скопируйте файл Assembly-UnityScript.dll в корневую папку игры с заменой, по пути: Car Mechanic Simulator 2018\cms2018_Data\Managed (Не забывайте про Backup заменяемого файла)
  • На всякий случай в архиве присутствует Backup заменяемого файла от версии v1.2.9, в любом случае, перед обновлением новыми патчами, необходимо вернуть оригинальный файл. Если Вы будете обновлять игру новыми патчами с изменённым Assembly-UnityScript.dll, Вы получите фатальную ошибку, решение которой заключается в полной переустановке игры.

Запустите игру и нажимайте соответствующие клавиши непосредственно в гараже (цифры не Num, а ниже F-клавиш):

  • F1 — Add $1000 — Добавить 1000$.
  • F2 — Add 1000 Exp — Добавить 1000 опыта. (Заметьте, что при вводе кода на открытие всего, у Вас нельзя открыть навык «Везунчик«, Вам нужно прокачать свой уровень до 55, чтобы была возможность его активировать).
  • F3 — Get all items — Получить все предметы. (Неизвестно в каком варианте он работает и при каких обстоятельствах, помогут только Ваши эксперименты).
  • F4 — Examine all cars — Исследование всех автомобилей находящихся в гараже. (Неизвестно, на что проходит исследование в двух типах данных функций, как с функцией 5).
  • F5 — Repair all cars — Полностью починить все автомобили находящиеся в гараже.
  • F6 — Finish current job — Завершить текущий заказ.
  • F7 — Fly-camera (On/Off) — «Режим призрака» Noclip.
  • N — Get item — Получить товар (Данная функция полностью не исследована, возможно получение бесплатных товаров в магазине)
  • 5 — Examine all cars — Исследование всех автомобилей находящихся в гараже. (см. пункт F4)
  • 6, 8, 9 — Spawn random car — Спавн автомобилей под забивку всего гаража, будьте осторожны нажимая клавишу много раз, возможно, что предыдущий автомобиль войдёт в новый заспавненный.
  • 7, 0 — Auction car — Возможность целевой смены автомобиля с запчастями или их отсутствием, новым цветом, ржавчиной и тд и тп.

Данный чит-мод, так же автоматически убирает размытие в движении и эффект свечения блум, NoIntro fix.

www.playground.ru

Профилирование и отладка Python, отладка / Mail.ru Group corporate blog / Habr

В предыдущей статье мы закончили разговор о профилировании обзором событийных профайлеров.

Сегодня я предлагаю рассмотреть методы отладки программ.

Прежде, чем начинать разговор об отладке, нам нужно определиться, что же это такое. По традиции, обратимся к Википедии: «Отладка — обнаружение, локализация и устранение ошибок». Вообще, для успешной отладки программы, нам необходимо (но не всегда достаточно) две вещи: значение переменных в том месте программы, в котором произошла ошибка, а так же стектрейс: порядок вызова функций, вплоть до ошибочной. Полезно так же знать об окружении, в котором выполняется программа: наличие (или отсутствие) свободной памяти, системные ограничения (например, на количество файловых дескрипторов) и так далее, но это слегка выходит за пределы нашей статьи.

Классика жанра


Что делает начинающий программист, когда хочет «проникнуть» внутрь программы и изучить содержимое переменных (в нужных местах) и логику работы программы (вызовы функций, выполнение условий)? Он прибегает к самому распространённому, самому простому и самому «действенному» способу отладки: расставляет по всему коду «принты» (оператор print в Python 2.x и функция print() в Python 3.x). Но не только начинающие грешат этим: продвинутые разработчики частенько ленятся использовать специальные инструменты для отладки, надеясь быстренько, за пару минут, найти причину ошибки и всё исправить, и не замечая, что поиски ошибок растягиваются на часы и даже дни. Кстати, такой подход называют «журналированием».

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

Но мы же пишем на Python, так почему бы не воспользоваться встроенными средствами отладки или инструментами, предлагаемыми сообществом? Например, вместо обычного логгирования в файл имеет смысл использовать Sentry, чтобы кроме сообщения об ошибке можно было отправить дополнительную информацию: стектрейс со всеми локальными переменными, любые другие переменные и вообще всё, что посчитаете нужным.

The Python Debugger


Python имеет встроенный отладчик: модуль pdb. В принципе, на этом можно было бы закончить статью, т.к. pdb — чрезвычайно мощный отладчик и всё остальное, по сути, всего лишь «украшательства» к нему. Но мы продолжим =)

Как можно заметить из названия, pdb многое взял от gdb (GNU Project debugger) — отладчика Си (и не только) программ. К слову, программы на Python можно отлаживать и с помощью gdb, просто это немножко сложнее и дольше, хотя тем, кто хочет углубиться в устройство языка, а так же тем, кто пишет сишные модули для питона без gdb никак не обойтись. Кроме того, gdb позволяет подключиться к уже работающей программе (через её pid) и заниматься её отладкой «прямо на месте».

Я сейчас не буду подробно описывать pdb, вот замечательная статья Дага Хеллманна (Doug Hellmann): pdb – Interactive Debugger на очень полезном ресурсе Python Module of the Week, а вот её хороший перевод на хабре: pdb – Интерактивный отладчик, выполненный пользователем xa4a.

IPython pdb


Предлагаю сразу поставить IPython и модуль ipdb для него:
➜ pip install ipython ipdb

IPython (и ipdb, как его часть) предлагает «более лучшую» консоль и, как следствие, более удобную отладку программ: подсветка кода, автодополнение, историю команд, динамическую интроспекцию любых объектов, магические функции, алиасы и многое другое. Полный список улучшений можно посмотреть в документации или прямо из консоли IPython, введя «?» в качестве команды. Всё это помогает при отладке и делает её простой и увлекательной.

Запустить отладку скрипта в ipdb можно несколькими способами:

➜ python -m ipdb script.py
➜ ipdb script.py

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

Но обычно такой вариант чересчур изнурителен: пока доберёшься до нужного места всеми этими «next», «step», да и ставить точку останова («break») руками каждый раз утомительно. Гораздо удобнее в нужном месте программы вставить следующую строку:

import ipdb; ipdb.set_trace()

И тогда при исполнении этой строки выполнение программы приостановится и будет запущен отладчик, — дальше можно начинать углубляться в изучение программы. По сути, функция «set_trace» — это установка точки останова (breakpoint).
Примечание для эстетов

Любой, кому знакома аббревиатура PEP8, в этом месте может обвинить меня в использовании двух команд в одной строке через точку с запятой, однако такой подход вполне имеет право на жизнь. Во-первых, это временный код, который никогда не будет закоммичен в репозиторий (об этом позаботится специальный хук, который проверяет код на соответствие PEP8 перед коммитом и пушем, а так же автопроверка кода в текстовом редакторе). Во-вторых, так проще вставлять и удалять эту строку в код. Ну и в-третьих, как написано в PEP8: «A Foolish Consistency is the Hobgoblin of Little Minds».


Python Debugger имеет ещё один режим работы, который в некоторых случаях оказывается удобнее фукнции set_trace. Он называется «post mortem»: запуск отладчика с заданным трейсбеком:
try:
    some_code()
except:
    import sys
    import ipdb
    tb = sys.exc_info()[2]
    ipdb.post_mortem(tb)

или так:
import sys
import ipdb


def run_debugger(type, value, tb):
    ipdb.pm()


sys.excepthook = run_debugger
some_code()

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

debug


Интересной заменой функции «set_trace» является модуль debug, который просто импортирует библиотеки ipdb и see (удобная альтернатива функции dir) и запускает отладку. Единственным плюсом модуля является удобство использования, достаточно в любом месте программы вставить строку:
import debug

И при выполнении этой строки будет вызван отладчик «ipdb» и импортирован модуль «see».

ipdbplugin


Ещё одна интересная и, на этот раз, полезная библиотека: nose-ipdb. С её помощью можно автоматически запускать отладчик при ошибках (исключениях) или же просто при неверно отработанных тестах (я надеюсь, вы используете nose? =). Для запуска отладчика ipdb при ошибках, достаточно при запуске тестов добавить ключ «—ipdb»:
➜ nosetests --ipdb

А для запуска отладчика при некорректно завершившихся тестов нужно добавить ключ «—ipdb-failures»:
➜ nosetests --ipdb-failures

Конечно, можно ловить всё и сразу:
➜ nosetests --ipdb --ipdb-failures

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

werkzeug


Потрясающий проект Армина Ронахера (Armin Ronacher), автора фреймворка Flask и вообще одного из крутейших программистов Python называется werkzeug и представляет собой сборник различных утилит для WSGI приложений. Одна из них — клёвый отладчик, который позволяет выводить удобный трейсбек ошибки, а так же запускать консоль Python в соответствующем месте трейсбека прямо на странице браузера:

Использовать его очень просто, достаточно обернуть приложение с помощью соответствующего middleware:
from werkzeug.debug import DebuggedApplication
from myapp import app
app = DebuggedApplication(app, evalex=True)

Говорят, что werkzeug умеет отлаживать даже Ajax-запросы, но, к сожалению, я сам лично никогда этого не делал. Буду рад любым комментариям на эту тему.

django-pdb


Ещё один хороший модуль, на этот раз для Django: django-pdb. Он позволяет запускать отладчик при наличии соответствующего GET-параметра в запросе (например: http://127.0.0.1:8000/app/view?ipdb) либо для всех запросов:
➜ python manage.py runserver --ipdb

Либо вызывать отладчик при возникновении исключений (режим «post-mortem»):
➜ python manage.py runserver --pm

или
POST_MORTEM = True

в settings.py.

django-extensions


Но гораздо лучше в Django использовать модуль django-extensions, который добавляет очень полезную команду runserver_plus. С помощью этой батарейки можно подружить Django и Werkzeug (см. выше) и начать получать удовольствие от страниц с пятисотой ошибкой =)

Для использования всего этого чуда достаточно запустить девелоперский сервер с помощью команды runserver_plus:

➜ python manage.py runserver_plus

sentry


Отладка программы в девелоперском окружении это, конечно, удобно и хорошо, но самое сложное — локализовать проблему по багрепорту от живого пользователя. Иногда это бывает сложно. Несмотря на все преимущества Python, модуля «телепатии» не существует, и разработчик остаётся один на один со словами пользователя «ничего не работает!!!11».

Проект Sentry позволяет сохранять каждую ошибку пользователя с текстом исключения, полным стектрейсом исключения и значениями всех локальных переменных в каждой из функций стектрейса, а так же много другой информации: окружение пользователя (браузер, ОС), все заголовки запроса и вообще всё, что пожелает разработчик.

Одинаковые ошибки группируются, таким образом можно наблюдать за «пульсом» проекта и чинить в первую очередь самые критичные места. Ещё один пример использования sentry — логгирование. Можно просто добавить в спорное место запись в лог сообщения с любыми интересующими разработчика переменными, и всё это окажется в sentry.

Но самый большой плюс в том, что всё это можно (и нужно!) использовать в продакшене.

PuDB


Ещё один интересный отладчик: PuDB представляет собой консольный дебагер с графическим интерфейсом:

Не буду много о нём писать (честно говоря, я сам активно им не пользовался), предлагаю прочитать короткую заметка на хабре: Удобный отладчик для Python/Django проектов от пользователя int22h или более полный обзор: Отладка Python/Django при помощи PuDB.

Winpdb


Standalone отладчик Python, на этот раз с полноценным графическим интерфейсом: Winpdb:

Его разработчики утверждают, что winpdb в 20 раз быстрее pdb, а так же поддерживает работу с тредами. Очень большой и подробный туториал можно найти на этой странице: code.google.com/p/winpdb/wiki/DebuggingTutorial.

IDE


Отдельного слова заслуживают универсальные «комбайны» программирования: IDE, которые позволяют не выходя из редактора запустить код, отпрофилировать его или запустить встроенный отладчик. Я, пожалуй, выделю несколько продуктов, предназначенных для разработки на Python: PyCharm, PyDev, Wing IDE и PTVS.

Лирическое отступление

К сожалению, лично я сколько не пытался, так и не смог пересилить себя и променять скорость, удивительную гибкость и удобство работы с консолью и любимым текстовым редактором (будь то vim, emacs или sublime text) на любую из вышеперечисленных IDE, однако мои коллеги успешно ими пользуются и поэтому я советую хотя бы дать этим замечательным продуктам шанс и попробовать их.


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

Спасибо всем, кто дочитал и прокомментировал.

Владимир Рудных,
Технический руководитель Календаря Mail.Ru.

habr.com

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *