gdb-python: почему приведенный ниже код не работает под gdb?

приведенный ниже код отлично работает как код python (без модуля gdb), но он не работает внутри gdb?

#!/usr/bin/env python
import csv
import gdb

list = []
x = open("file.txt")
with x as csv_data:
    entries = csv.reader(csv_data, delimiter=",")
    for entry in entries:
        list.append({
            "name": entry[0],
            "type": entry[1],
            "link": entry[2],
            "level": entry[3]
        })

ошибка:

(gdb) source script.py
 File "script.py", line 6
   with x as csv_data:
        ^
 SyntaxError: invalid syntax

file.txt это:

Mac, char, list, one
John, char, list, three
...
...

Похоже, возникла проблема с ключевыми словами with и as.


person Baijnath Jaiswal    schedule 03.07.2013    source источник
comment
кто-нибудь может ответить?   -  person Baijnath Jaiswal    schedule 04.07.2013


Ответы (1)


gdb, вероятно, связан с другой версией Python, чем та, которую вы ожидаете.

Вы можете проверить это с помощью обычных методов Python или с помощью "ldd gdb".

Python позволяет импортировать «с» из «будущего» - ищите это.

person Tom Tromey    schedule 04.07.2013
comment
еще не удалось решить, у меня установлен python 3.0.1. выводldd gdb равен libncurses.so.5 => /usr/lib64/libncurses.so.5 (0x0000003c29200000) libz.so.1 => /usr/lib64/libz.so.1 (0x0000003c17c00000)``libm.so.6 => /lib64/libm.so.6 (0x0000003c16c00000)``libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003c17400000)``libdl.so.2 => /lib64/libdl.so.2 (0x0000003c17000000)``libutil.so.1 => /lib64/libutil.so.1 (0x0000003c24600000)``libexpat.so.0 => /lib64/libexpat.so.0 (0x0000003c1b800000)``libc.so.6 => /lib64/libc.so.6 (0x0000003c16800000)``/lib64/ld-linux-x86-64.so.2 (0x0000003c16400000) - person Baijnath Jaiswal; 05.07.2013
comment
Значит, вы сделали что-то странное, поскольку в соответствии с этим ваш gdb вообще не включает python. - person Tom Tromey; 06.07.2013
comment
но внутри него работает питон. Вы можете посоветовать мне, что мне делать? При необходимости могу установить с нуля .. - person Baijnath Jaiswal; 06.07.2013
comment
Вы можете использовать любой питонический метод, чтобы найти версию. Навскидку, я не знаю, что это может быть, но уверен, что они задокументированы. Или вы присоединяетесь к работающему gdb и используете общую информацию. Или, возможно, есть и другие способы. - person Tom Tromey; 07.07.2013