Збирання і тестування програм – ЧАСТИНА 2

M-x perldb  hRETфайл hRETi

Запускає інтерпретатор Perl в отладочном режимі для налагодження файлу, про-

грами на Perl

M-x jdb hRETфайл hRETi

Запускає для налагодження файлу відладчик Java

M-x pdb hRETфайл hRETi

Запускає для налагодження файлу відладчик Python

Кожна з цих команд приймає один аргумент: командний рядок для виклику відладчика У простому випадку, задайте просто імя виконуваного файлу, який ви хочете налагоджувати Ви також можете використовувати ключі, підтримувані вашим отладчиком Однак шаблони і змінні оболонки неприпустимі GUD припускає, що перший аргумент, що не починається з -, є імям виконуваного файлу

Emacs може запустити тільки один відладочний процес в один час

2352  Управління отладчиком

Коли ви запустили відладчик за допомогою GUD, він використовує буфер Emacs для звичайного введення і виведення Цей буфер називається буфером GUD Отладчик показує рядки вихідних файлів, звертаючись до них у буферах Emacs Стрілка (=>) в одному з буферів вказує на виконувану в даний момент рядок Переміщення точки в буфері не змінює положення стрілки

2 Для роботи підтримки sdb вимагається правильна таблиця тегів (Прим перекладача)

Ви можете в будь-який час розпочати редагувати вихідні файли в тих буферах, які їх показують Стрілка не є частиною тексту файлу вона зявляється лише на екрані Якщо ви дійсно змінюєте вихідний файл, памятайте, що видалення або вставка рядків зібє положення стрілки GUD не може визначити, який рядок рядок відповідала номеру рядка в повідомленні відладчика до вашого зміни Крім того, щоб ваші зміни знайшли відображення в таблицях відладчика, вам зазвичай доведеться перекомпілювати і перезапустити програму

Якщо ви захочете, ви можете повністю управляти процесом відладчика через його буфер, який використовує варіант режиму Shell Доступні всі звичайні команди вашого відладчика, і ви можете використовувати команди історії режиму Shell для їх повторення Див Розділ 3023 [Режим Shell], с 325

2353  Команди GUD

Буфер діалогу з GUD використовує варіант режиму Shell, так що вам доступні команди цього режиму (див Розділ 3023 [Режим Shell], с 325) Режим GUD також надає команди для установки і скидання контрольних точок, для вибору фреймів стека і для покрокового проходу по програмі Ці команди доступні як в буфері GUD, так і глобально, але з різними привязками

Команди управління контрольними точками зазвичай використовуються в буферах, що звертаються до файлів, тому що вони дають спосіб вказати де поставити або прибрати контрольну точку Ось глобальні привязки для установки контрольних точок:

C-x hSPCi      Встановлює контрольну точку у вихідній рядку, де знаходиться точка

Це інша спеціальна команда, яка надається GUD Ключі, що починаються з Cc, доступні тільки в буфері діалогу з GUD Привязки ключів, що починаються з Cx Ca, доступні і в буфері діалогу з GUD, і у вихідних файлах

C-c C-l

C-x C-a C-l

Відображає в іншому вікні останній рядок, на яку зявилося посилання в буфері GUD (тобто рядок, вказаний в останньому повідомленні про позицію в програмі) Це запускає команду gud-refresh

C-c C-s

C-x C-a C-s

Виконує один рядок коду (gud-step) Якщо рядок містить виклик функції,

виконання зупиняється після входу в неї

C-c C-n

C-x C-a C-n

Виконує один рядок коду, проходячи через виклики функцій без зупинки

(gud-next)

C-c C-i

C-x C-a C-i

Виконує одну машинну інструкцію (gud-stepi)

C-c C-r

C-x C-a C-r

Продовжує виконання з невизначеною точкою зупину Програма продовжить роботу до тих пір, поки не потрапить на контрольну точку, завершиться або отримає сигнал, що перевірявся отладчиком (gud-cont)

C-c C-d

C-x C-a C-d

Видаляє контрольну точку (одну або декілька) в поточному рядку вихідного тексту, якщо вони поставлені (gud-remove) Якщо ви викличте цю команду в

C-c C-t

буфері діалогу з GUD, вона застосовується до рядка, на який востаннє зупинилася програма

C-x C-a C-t

Встановлює тимчасову контрольну точку на поточному вихідної рядку, якщо така є в даний момент Якщо ви викличте цю команду в буфері діалогу з GUD, вона застосовується до рядка, на якій програма зупинилася в останній раз

Перераховані вище команди ставляться до всіх підтримуваним отладчиков Якщо ви користуєтеся GDB або DBX (деякими версіями), доступні такі додаткові команди:

C-c &lt

C-x C-a < Вибирає наступний зовнішній фрейм стека (gud-up). Це еквівалентно ко-

манде up.

C-c &gt

C-x C-a> Вибирає наступний внутрішній фрейм стека (gud-down) Це еквівалентно команді down.

Якщо ви користуєтеся GDB, доступні наступні привязки:

hTABi              Завершує імя символу (gud-gdb-complete-command) Цей ключ доступний тільки в буфері діалогу з GUD і вимагає GDB версії 413 або пізнішої

C-c C-f

C-x C-a C-f

Виконує програму до тих пір, поки не відбудеться повернення з обраного фрейма стека (або поки програма не зупиниться з іншої причини)

Ці команди інтерпретують числовий аргумент як лічильник повторень, якщо це має сенс

Так як hTABi  служить командою завершення, ви не можете використовувати її для набору знака табуляції як введення для програми, яку ви налагоджуєте в GDB Замість цього, щоб ввести знак табуляції, набирайте C-q hTABi

2354  Налаштування GUD

Під час запуску GUD виконує одну з наступних пасток: gdb-mode-hook, якщо ви користуєтеся GDB dbx-mode-hook, якщо ви користуєтеся DBX sdb-mode-hook, якщо ви користуєтеся SDB xdb-mode-hook, якщо ви користуєтеся XDB perldb-mode-hook для отладочного режиму Perl jdb-mode-hook для PDB jdb-mode-hook для JDB Ви можете використовувати ці пастки для визначення ваших власних привязок ключів для буфера діалогу з отладчиком Див Розділ 3123 [Пастки], с 349

Ось зручний спосіб визначити команду, яка посилає отладчику деяку ко-

мандного рядок і встановлює для неї привязку в буфері діалогу з отладчиком:

(Gud-def функція команднарядок привязка докрядок)

Це визначить команду з імям функція, яка посилає процесу відладчика команднурядок, і дасть їй рядок опису докрядок Ви можете використовувати певну таким чином команду будь буфері Якщо привязка не дорівнює nil, gud-def також привязує цю команду до Cc привязка в режимі буфера GUD і до Cx Ca привязка глобально

Командний рядок може містити певні %-послідовності, які про-

значают дані, підставляються під час виклику функції:

‘% F Імя поточного вихідного файлу Якщо поточним є буфер GUD, то теку-

щий вихідний файл – це файл, в якому програма зупинилася

‘% L Номер поточної вихідної рядка Якщо поточним є буфер GUD, то ті-

кущая вихідна рядок – це рядок, на якій зупинилася програма

‘% E Текст lvalue мови Сі або вирази виклику функції, в якому або поруч з яким знаходиться точка

‘% A Текст шестнадцатірічное адреси, в якому або поруч з яким знаходиться точка

‘% P Числовий аргумент викликаної функції у вигляді десяткового числа Якщо ця команда використовується без числового аргументу, % p ​​буде порожнім рядком

Якщо ви не використовували % p ​​в командному рядку, що визначається вами команда буде ігнорувати будь-який числовий аргумент

236  Виконання лісповскіх виразів

У Emacs є кілька основних режимів для мов Лісп і Scheme У них використовуються одні й ті ж команди редагування, але різні команди для виконання виразів Лиспа У кожного режиму своє призначення

Режим Emacs-Lisp

Режим для редагування вихідних файлів програм, що запускаються в Emacs Lisp Цей режим визначає CMx для обчислення поточного визначення функції Див Розділ 237 [Бібліотеки Лиспа], с 253

Режим Lisp Interaction

Режим для діалогового сеансу з Emacs Lisp Він визначає Cj для обчислення s-вирази перед точкою і вставки його значення в буфер Див Розділ 239 [Діалог з Ліспі], с 255

Режим Lisp

Режим для редагування вихідних файлів програм, які запускають в Ліспі, відмінних від Emacs Lisp Цей режим визначає CMx так, щоб він посилав поточне визначення функції підлеглому Лісп-процесу Див Розділ 2310 [Зовнішній Лисп], с 256

Режим Inferior Lisp

Режим для діалогового сеансу з підлеглим процесом Лиспа Цей режим обєднує спеціальні засоби режиму Lisp та режиму Shell (див Розділ 3023 [Режим Shell], с 325)

Режим Scheme

Подібний до режиму Lisp, але для програм на Scheme

Режим Inferior Scheme

Режим для діалогового сеансу з підлеглим процесом Scheme

Більшість команд редагування для роботи з програмами на Ліспі насправді доступні глобально Див Глава 22 [Програми], с 205

237  Бібліотеки Лисппрограм для Emacs

Лісп-програми для команд редагування зберігаються у файлах, чиї імена традиційно закінчуються на . El. Це закінчення повідомляє Emacs, що редагувати їх слід в режимі Emacs-Lisp (див Розділ 236 [Виконання Лиспа], с 253)

Щоб виконати файл з кодом на Emacs Lisp, використовуйте Mx load-file Ця команда зчитує імя файлу, використовуючи мінібуфер, і потім виконує вміст цього файлу як Лісп-програму Для цього немає необхідності спочатку звертатися до файлу, в кожному разі ця команда зчитує файл таким, яким він знаходиться на диску, а не як текст в буфері Emacs

Якщо файл Лісп-програми встановлений в каталогах з бібліотеками Emacs Lisp, користувачі можуть завантажити його, використовуючи Mx load-library Програми можуть завантажити його, викликаючи load-library, або за допомогою load, більш низкоуровневой функції, яка схожа на цю, але допускає деякі додаткові аргументи

Mx load-library відрізняється від Mx load-file тим, що вона переглядає послідовно-

ність каталогів і пробує три імені в кожному з них Припустимо, ваш аргумент

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*