Использование интеграции gdb-i=mi в emacs 24

Я проверяю segfault в одном из наших приложений. Короткое время после запуска приложения, главное gdb строка состояния изменяется на:

(отладчик: выполнить [сигнал-получен])

A (gdb) появится приглашение, но содержимое всех остальных окон останется неизменным (пустым). Ввод чего - либо в командной строке ничего не делает -gdb кажется, висит. Выполнение тех же шагов на command line результаты в ожидаемом выходе из gdb с a полный и правильный след.

это моя первая отладка с -i=mi интеграция между emacs и gdb. Я использую emacs 24.2 и gdb 7.5.

есть какие-либо предложения о том, как я могу отлаживать это в дальнейшем?

можно ли снизить уровень интеграции? Это позволит мне определить, какая область вызывает проблему?

последний момент заключается в том, что начальная загрузка приложения занимает около 70-х годов по сравнению с 3С от command line.

3 ответов


время загрузки можно уменьшить, установив gdb-create-source-file-list до nil (используйте настраивать). См. документацию о том, что это делает и почему это существенно увеличивает время загрузки в некоторых случаях.


можно использовать M-x gud-gdb использовать старый режим gud (т. е. без mi взаимодействия). Менее причудливый, но более надежный.


получается, что gdb-ui из emacs 23 по-прежнему будет работать в emacs 24:

  • текст gdb-ui (в моем случае gdb-ui.el.gz и gdb-ui.elc из резервной копии)
  • поместите их в каталог (я добавил ~/emacs-modes)

затем добавьте следующее к вашему .в Emacs:

(add-to-list 'load-path "~/emacs-modes")
(require 'gdb-ui)

под управлением gdb теперь будет использовать старые --annotate=3 режим а не -i=mi.