gdb розділений вигляд з кодом


111

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

Вибачте за малюнок, але у скріншотів немає скріншотів.

Що це? Що я зробив, або, точніше, як знову отримати цей режим розділеного екрана? Чи є назва цього режиму чи десь я можу прочитати про те, як ним користуватися?


2
Для швидкого ознайомлення: Ви можете вийти з цього режиму, використовуючи будь-який із Cx Ca, Cx a або Cx A.. Дивіться це питання .
Річард

Відповіді:


95

Це називається TUI (не жартує). Почніть, наприклад, з gdbtuiабо gdb -tui...


11
Ви також можете користуватися layout nextпісля gdbнормального запуску
khaverim

87

Ви можете його запустити динамічно, натискаючи ctrl+ xі ctrl+ a.


дякую @ user146043, це здається єдиним способом, якщо ви працюєте з екраном одночасно з ctrl-a - це спосіб ініціювати екранні команди!
olik79

Схоже, ви також можете закрити цю комбінацію!
Нік Десольньє

40

Є два його варіанти.

  1. щоб побачити лише код Натисніть

Натисніть CTRL Xразом, а потім 1

  1. Щоб побачити джерело і збірку

Натисніть разом "CTRL" "X", а потім "2"

http://www.cs.fsu.edu/~baker/ada/gnat/html/gdb_23.html

Знімок екрана з кодом та складанням. введіть тут опис зображення

Ознайомтесь і з цим дивовижним проектом Github.


Велике спасибі за те, що поділилися посиланням на проект github. Це занадто приголомшливо :)
Vivek Agrawal

16

Ви також можете запустити його з оболонки gdb за допомогою команди "-" (тире). Не впевнений, як динамічно вимкнути це, хоча.


Це здається найпростішим у використанні та запам'ятовуванні.
Сіюань Рен

2
Ви можете вийти, виконавши будь-який із Cx Ca, Cx a або Cx A. Див. Stackoverflow.com/questions/14147117/…
dmonopoly

15

Інформаційна панель GDB

https://github.com/cyrus-and/gdb-dashboard

Приладна панель GDB використовує офіційний API GDB Python і друкує інформацію, яку ви хочете, коли GDB зупиняється, наприклад, після a next, наприклад, нативної displayкоманди .

Vs TUI:

  • більш надійний, оскільки він просто друкує для stdout замість того, щоб переводити оболонку в більш магічний стан прокляття, наприклад:

  • добре налаштовується від Python: ви можете вибрати, що ви хочете вивести і наскільки великий кожен розділ, залежно від того, що ви налагоджуєте.

    Найбільш корисні представлення вже реалізовані: джерело, збірка, регістри, стек, пам’ять, потоки, вирази ..., але слід розширити її будь-якою інформацією, яка виставлена ​​в API GDB Python.

    TUI дозволяє показувати лише два джерела, збірку та регістри, і це все. Якщо ви не хочете змінити це вихідний код C ;-)

введіть тут опис зображення

Я вважаю, що GDB має поставлятися з такою установкою поза коробкою та включати за замовчуванням, це приверне набагато більше користувачів таким чином.

О, і головний розробник, Андреа Кардачі , був дуже чуйним і приголомшливим. Великі кудо.

Дивіться також: Як виділити та кольоровий вихід gdb під час інтерактивної налагодження?


2
Немає достатньо слів, щоб описати, як це приголомшливо. Дякую :)
невирішений


5

Коли GDB перебуває в стандартному режимі, використання winавтоматично перемикається в режимі TUI.
Інша команда для режиму TUI:

  • info win
    Перерахуйте та задайте розмір усіх відображених вікон.
  • focus next | prev | src | asm | regs | split
    Встановіть фокус на назване вікно. Ця команда дозволяє змінити активне вікно, щоб клавіші прокрутки могли впливати на інше вікно.

Прочитайте тут форму додаткової довідки.


2

Існує також інтерфейсний інструмент для GDB під назвою cgdb. Навіть з деяким кольоровим виділенням. "ESC" для переключення на перегляд коду, "i" для повернення до gdb

cgdb


1

Режим tui був чітко натхненний emacs - я виявив його випадково, коли потрапив ^ Xo, який перемикається між розділеними вікнами в emacs - я іноді вражаю це невміло, коли те, що я повинен робити, - перехід на іншу програму. У будь-якому випадку це призводить до ще однієї згаданих функцій, що ви можете перемістити курсор з вікна коду (де ви можете прокручувати) до командного рядка, або навпаки, за допомогою ^ Xo.


Очевидно, що більшість програм GNU мають emacs на зразок клавіатурних зв'язків, головним чином, з причин послідовності. Я знаю, що існує режим vi в bash, але це не так добре, як режим emacs.
klaus
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.