Подтвердить что ты не робот

Ddd висит на старте

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Но это означает, что все ваши настройки исчезнут. Поэтому я начал искать настоящую причину. Я заметил, что проблема возникает только после того, как я использовал диалог "Настройки GDB". После того как вы откроете этот диалог, файл init, упомянутый выше, будет расти, потому что там будет храниться множество настроек gdb.

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

установить расширенный запрос не установлен \n\

Этот "не установлен" - это то, что gdb сообщит о "show extended-prompt". Unfortunatley "установить расширенный запрос является своего рода ошибкой в ​​gdb, поэтому, если я введу "set extended-prompt not set" в gdb, запущенный из оболочки без включенного ddd, gdb также заблокирует.

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

set extended-prompt (gdb)\n\

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

Ответ 3

Выполнение Ctrl + D, поэтому выбор "Restart DDD", похоже, работает для меня.

Ответ 4

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

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

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

Ответ 5

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

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

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

Ответ 6

Проблема возникает при открытии окна 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.

Ответ 7

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

Ответ 8

Расшифруйте предложение просто удалить файл init, который работал и для меня.

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