Configurare GDB pretty printing in Ubuntu 13.10


8

Ho provato a configurare la bella stampa GDB (per un lavoro più semplice con contenitori standard) secondo questa risposta . Invece di usare il grazioso codice per stampanti di Python da svn, ho usato quelli forniti con Ubuntu . Dopo aver completato il resto del processo, ho avviato il seguente messaggio di errore all'avvio di 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.

Dopo aver esaminato un po 'più a fondo il problema, ho scoperto che la causa principale è più profonda: Python 3 usato in gdb è incompatibile con le stampanti piuttosto libstdc ++ .

Qualcuno ha una soluzione funzionale per questo? Per ora sono bloccato con gli aiutanti (anche utili, ma non altrettanto funzionali) di Dan Marinescu: http://www.yolinux.com/TUTORIALS/GDB-Commands.html#STLDEREF


Ho due domande: in primo luogo, Ask Ubuntu è il posto giusto, e perché? Secondo, non è questo un bug dell'applicazione? In entrambi i casi, è fuori tema!
Lucio,

Come è fuori tema? Ho collegato un bug confermato e di grande importanza dal launchpad di Ubuntu che causa il mio problema e ho chiesto una soluzione alternativa. Se qualcuno che utilizza 13.10 riuscisse a farlo, avrei sicuramente potuto usare la loro soluzione. Ho controllato con un amico su Gentoo e questo problema non li riguarda.
nietaki,

2
Esiste una patch senza commit per far funzionare le stampanti con Python 3 su gcc.gnu.org/ml/libstdc++/2013-10/msg00243.html
Jonathan Wakely,

Risposte:


8

La soluzione più semplice sembra essere quella di configurare normalmente le graziose stampanti ma poi convertirle printers.pyin python3 usando 2to3:

2to3 printers.py -w

L'ho provato solo brevemente, ma sembra funzionare bene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.