Как получить ввод из GDB в Emacs (с помощью скрипта Python) - PullRequest
1 голос
/ 13 апреля 2011

Я хочу использовать python для создания интерактивного скрипта для GDB.Он хорошо работает в gdb, но не работает, если я вызываю gdb из emacs.

Например, скрипт python (test.py) похож на приведенный ниже.Он просто печатает то, что получает.

def testInput():
    n = raw_input('(gdb) ')
    print n

Он работает в gdb:

% gdb
GNU gdb (GDB) 7.2.50.20110217
Copyright (C) 2011 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
(gdb) source test.py
(gdb) python testInput()
(gdb) 1
1
(gdb) q

Но в emacs он просто зависнет в raw_input и никогда не сможет получить ввод:

(gdb) source test.py
(gdb) python testInput()
(gdb) 1
2
...

Есть ли способ заставить его работать так же, как в gdb?

Ответы [ 2 ]

1 голос
/ 06 февраля 2013

Вызов GDB с M-x gud-gdb решил проблему для меня.За дополнительной информацией обращайтесь к главе 27 руководства Emacs.

Надеюсь, что это поможет после двух лет ...

0 голосов
/ 02 сентября 2011

Когда используется интерактивный внешний процесс в буфере emacs, режим должен иметь возможность распознавать из буфера, когда внешний процесс запрашивает у пользователя ввод данных, чтобы он знал, что ему нужно разрешить пользователю что-то вводить. В противном случае, emacs будет просто вечно ждать, пока процесс выдаст что-то, что он распознает, и процесс будет вечно ждать ввода. Поскольку ваш скрипт на python использует другое приглашение, режим emacs gdb никогда не распознает, что ввод запрашивается.

Попробуйте изменить значение gdb-prompt-name-regexp. Вот значение по умолчанию от gdb-mi.el:

(defvar gdb-prompt-name-regexp "value=\"\\(.*?\\)\"")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...