ДДД висит на старте - PullRequest
20 голосов
/ 26 мая 2010

Вопрос был задан ранее, и я вижу сообщение об ошибке в новостных группах DDD, но ни одно из предложенных решений не работает для меня.

Это происходит, но когда вы пытаетесь сделать что-то, например, открыть файл, оно зависает с сообщением "ожидание, пока GDB не будет готов."

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

Ответы [ 8 ]

26 голосов
/ 22 июля 2012

Удаление швов ~ / .ddd для решения проблемы.

25 голосов
/ 10 июля 2014

Столкнулся и с этой проблемой. Простое решение, как указано выше, - удалить файл инициализации в каталоге ~ / .ddd /.

Но это означает, что все ваши настройки исчезнут. Так что я начал охотиться за реальным делом. Я заметил, что проблема возникает только после того, как я использовал диалог «Настройки GDB». Как только вы откроете это диалоговое окно, упомянутый выше файл инициализации будет расти, потому что там будет храниться множество настроек GDB.

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

set extended-prompt not set\n\

Это "не установлено" - это то, что GDB сообщит о "show extended-prompt". Набор "расширенный-быстрый" В GDB это ошибка, поэтому, если я введу «set extended-prompt not set» в GDB, запущенном из оболочки без участия DDD, GDB также заблокируется.

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

set extended-prompt (gdb) \n\

С этой настройкой я больше не сталкиваюсь с проблемой. Надеюсь, это поможет и в вашем случае.

7 голосов
/ 24 июля 2015

Выполнение Ctrl + D, затем выбор «Restart DDD», кажется, работает для меня.

3 голосов
/ 12 мая 2016

Проблема возникает при открытии окна GDB Settings..., даже не касаясь каких-либо настроек.

Поскольку удаление каталога конфигурации ~/.ddd/ каждый раз не является подходящим решением, если вы настроили среду DDD, я нашел решение для исправления файла ~/.ddd/init, которое также могло бы помочь вам, не удаляя всю конфигурацию .

Закройте DDD и откройте в текстовом редакторе файл

~/.ddd/init

Поиск строки

set extended-prompt not set\n\

и удалите его или замените его на

set extended-prompt \n\

Сохраните и запустите DDD. Это начнется как надо.

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

alias fix-ddd="sed '/not set/d' -i $HOME/.ddd/init"

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


Если вы не хотите использовать cli для исправления файла инициализации, другой подход состоит в том, чтобы отредактировать файл инициализации, как предлагалось ранее, и если вам по какой-либо причине придется открыть панель GDB Settings..., не забудьте отключить ее в Edit выберите пункт Save Options и оставьте его отключенным до следующего перезапуска DDD.


Ради полноты (как сказано в @hmogal) удара

CTRL+d

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


Все протестировано с DDD 3.2.12 .

2 голосов
/ 25 апреля 2013

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

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

Примечание. При перезапуске DDD после удаления файла инициализации будет создан файл инициализации по умолчанию.

1 голос
/ 14 июня 2016

Используя Ctrl + D, появляется диалоговое окно с просьбой перезапустить GDB, которая устраняет проблему В моем случае удаление ~ / .ddd или файла инициализации в этой конкретной папке не помогло.

1 голос
/ 01 июля 2014

Если проблема не устранена, может помочь следующий обходной путь:

  • откройте DDD как обычно (например, ddd --debugger bashdb script.sh)
  • введите exit в нижней панели DDD

Кажется, это убивает один экземпляр bashdb, а затем запускается другой экземпляр bashdb. Этот второй экземпляр bashdb, кажется, работает нормально, когда исходный код bash наконец-то появился на верхней панели и позволяет вам проходить и отлаживать.

0 голосов
/ 11 июля 2013

Предложение Дешифера о простом удалении файла инициализации сработало и у меня.

А для тех, кто не знает, ~/.ddd - это папка .ddd в вашем домашнем каталоге.

...