Menyiapkan pencetakan cantik GDB di Ubuntu 13.10

8

Saya mencoba mengatur pencetakan cantik GDB (untuk pekerjaan yang lebih mudah dengan wadah standar) menurut anwer ini . Alih-alih menggunakan kode printer cantik python dari svn, saya menggunakan kode yang dikirimkan bersama ubuntu . Setelah melalui seluruh proses saya berakhir dengan pesan kesalahan berikut ketika meluncurkan gdb:

For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Traceback (most recent call last):
  File "<string>", line 3, in <module>
  File "/home/nietaki/gdb_printers/python/libstdcxx/v6/printers.py", line 54
    raise ValueError, "Cannot find type %s::%s" % (str(orig), name)
                    ^
SyntaxError: invalid syntax
/home/nietaki/.gdbinit:6: Error in sourced command file:
Error while executing Python code.

Setelah melihat sedikit lebih dalam masalah saya menemukan akar penyebabnya terletak lebih dalam - Python 3 yang digunakan dalam gdb tidak kompatibel dengan libstdc ++ printer cantik .

Apakah ada yang punya solusi fungsional untuk itu? Untuk saat ini saya terjebak dengan pembantu (juga bermanfaat, tetapi tidak berfungsi) dari Dan Marinescu: http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF

nietaki
sumber
Saya punya dua pertanyaan: Pertama, apakah Tanya Ubuntu tempat yang tepat, dan mengapa? Kedua, bukankah ini bug aplikasi? Dalam kedua kasus, itu di luar topik!
Lucio
Bagaimana ini di luar topik? Saya menautkan bug yang dikonfirmasi dan sangat penting dari Ubuntu launchpad yang menyebabkan masalah saya dan meminta solusinya. Jika ada yang menggunakan 13.10 berhasil ini saya pasti bisa menggunakan solusi mereka. Saya memeriksa dengan seorang teman yang ada di Gentoo dan masalah ini tidak mempengaruhi mereka.
nietaki
2
Ada tambalan yang tidak berkomitmen untuk membuat printer bekerja dengan Python 3 di gcc.gnu.org/ml/libstdc++/2013-10/msg00243.html
Jonathan Wakely

Jawaban:

8

Perbaikan termudah tampaknya adalah dengan mengatur printer cantik seperti biasa tetapi kemudian dikonversi printers.pyke python3 menggunakan 2to3:

2to3 printers.py -w

Saya hanya mengujinya secara singkat, tetapi tampaknya berfungsi dengan baik.

dshepherd
sumber