Msgstr "Модуль не назван". Ошибка Python в GDB
Я работаю над проектом класса (не волнуйтесь, этот вопрос не домашнее задание) и недавно перешел с машин отдела на свою машину. Проект заключается в создании простой операционной системы. Чтобы упростить задачу, нам предоставляется возможность "присоединить" GDB к QEMU, в котором работает наша программа. Запуск этой программы без подключения GDB на моем компьютере работает нормально, однако, когда я начинаю пытаться использовать GDB, он не запускается. Главное, на что следует обратить внимание (я думаю), это то, что он отлично работает на компьютерах отдела (gdb 7.4.1-debian), но не на моем (7.6.1-ubuntu).
Ошибка, которую я получаю, относящаяся к python, состоит в том, что расширения gdb написаны на python, но, похоже, их не найдено. Я также получаю синтаксическую ошибку. Прогон программы выглядит следующим образом:
/usr/bin/qemu-system-i386
GNU gdb (GDB) 7.6.1-ubuntu
Copyright (C) 2013 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-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/alfonso/course/cs167/weenix/kernel/weenix.dbg...done.
После чего он немного зависает, затем выдает мне эту ошибку:
inittmp.gdb:1: Error in sourced command file:
localhost:1234: Connection timed out.
Traceback (most recent call last):
File "/home/alfonso/course/cs167/weenix/kernel/mm/memcheck.py", line 5, in <module>
import weenix
ImportError: No module named 'weenix'
File "/home/alfonso/course/cs167/weenix/kernel/mm/page.py", line 15
print "pagesize: {0}".format(weenix.kmem.pagesize())
^
SyntaxError: invalid syntax
File "/home/alfonso/course/cs167/weenix/kernel/mm/slab.py", line 40
print "{1:<{0}} {3:>{2}} {5:>{4}} {7:>{6}}".format(
^
SyntaxError: invalid syntax
File "/home/alfonso/course/cs167/weenix/kernel/proc/proc.py", line 17
print weenix.proc.str_proc_tree()
^
SyntaxError: invalid syntax
Traceback (most recent call last):
File "/home/alfonso/course/cs167/weenix/kernel/util/debug.py", line 3, in <module>
import weenix
ImportError: No module named 'weenix'
Traceback (most recent call last):
File "/home/alfonso/course/cs167/weenix/kernel/util/list.py", line 3, in <module>
import weenix
ImportError: No module named 'weenix'
Breakpoint 1 at 0xc0008f04: file util/debug.c, line 190.
Breakpoint 2 at 0xc0007016: file main/kmain.c, line 298.
Breakpoint 3 at 0xc0006cf3: file main/kmain.c, line 129.
init.gdb:6: Error in sourced command file:
The program is not being run.
Конечно, ошибки импорта и неправильные синтаксисы заставили меня сначала задуматься о настройках PYTHONPATH и / или пакета, но это то, что работает нормально (проверил это). Единственное, о чем я могу думать, это то, что у меня есть некоторые проблемы с конфигурацией, которые я пропускаю.
Если хотите, я могу опубликовать скрипт bash, файлы.gdb и все остальное, но, поскольку на компьютерах отдела это работает нормально, я сомневаюсь, что это проблема.
Версии Python: (отдел: "2.7.3", я: "2.7.5+")
РЕДАКТИРОВАТЬ: После некоторых поисков я понял, что новейшая Linux Mint(petra) использует GDB, который интерпретирует Python как Python3. В настоящее время я ищу способ настройки GDB, но, поскольку я никогда не делал этого раньше, я был бы признателен, если бы кто-то мог направить меня в этом.
2 ответа
Вы используете Python 3 для этого режима отладки.
$ python3 test33.py
File "test33.py", line 1
print "hello".format()
^
SyntaxError: invalid syntax
Убедитесь, что вы используете Python 2, как вы говорите.
Я тоже делаю эту домашнюю работу. (Я думаю, weenix слишком часто используется для курсов ОС.)
Что касается проблемы "импорта weenix", то это потому, что скрипт python weenix не находится в каталоге данных GDB. При использовании GDB с Python этот каталог будет автоматически добавлен в PATH. Поэтому просто поместите "weenix/python/weenix" в каталог данных / python. Что касается меня, это / usr / shared / gdb /.
Веселиться с Weenix!