[Kde-devel-es] Migrando KLog... ¿Alguna sugerencia?

Albert Astals Cid aacid at kde.org
Sat Sep 5 13:23:04 CEST 2009


A Dijous, 3 de setembre de 2009, Jaime Robles va escriure:
> Buenas de nuevo,
> 
> Ya tengo compilando KLog... con MUCHOS "warnings" pero por lo menos
> compila con Qt4/KDE4 ':-)
> 
> Ahora estoy con el problema de que muere nada más arrancarlo y no se por
> dónde tirar.
> 
> Supongo que será un problema derivado de mi falta de conocimiento de
> programación... por lo que probablemente esté haciendo una barbaridad... y
> en eso confío para pedir por aquí algo de ayuda, que sea una barbaridad
> fácil de identificar por alguien con los mínimos conocimientos.
> 
> 
> ¿Se anima alguien a compilar el código y ver el error que da? A ver si
> alguien me puede orientar en el buen camino... por favor.
> 
> El código es una "guarrada"... lo era antes de la migración pero lo que
> tengo ahora... bueno, me da hasta vergüenza publicarlo!! X'DDD
> 
> Está aquí:
> http://jaime.robles.es/klog/download/unstable/
> 
> Muchas gracias...

Te falta un cmake check para libhamlib-dev

El código no compila tienes 
./src/awarddxcc.h:28:const int ENTITIES = 400;
./src/entity.h:29:#define ENTITIES 340
./src/awardwaz.h:28:const int ENTITIES = 400;
./src/awardiota.h:27:const int ENTITIES = 400;

cuando alguno de los 3 const incluye a entity.h queda algo como
const int 340 = 400;
y el compilador dice
error: expected unqualified-id before numeric constant

Una vez comentado el #define de entity.h compila y peta al arrancar

El señor valgrind nos dice

Use of uninitialised value of size 8                                                                                                       
   at 0x78DC3D4: QComboBox::d_func() const (qcombobox.h:303)                                                                               
   by 0x78CF373: QComboBox::count() const (qcombobox.cpp:1264)                                                                             
   by 0x43A6B5: QComboBox::insertStringList(QStringList const&, int) 
(qcombobox.h:279)                                                     
   by 0x443C90: Setup::setRig() (setup.cpp:887)                                                                                            
   by 0x4484E2: Setup::Setup(QWidget*, char const*) (setup.cpp:46)                                                                         
   by 0x422C37: Klog::slotKlogSetup() (klog.cpp:4597)                                                                                      
   by 0x422B72: Klog::readConf() (klog.cpp:2316)                                                                                           
   by 0x438164: Klog::Klog(QWidget*, char const*) (klog.cpp:109)                                                                           
   by 0x43CC28: main (main.cpp:59)    

Basicamente como la culpa no es de Qt sino tuya (por definicion en el 99% de 
los casos) esto significa que el problema esta en setup.cpp linea 887.

P: ¿Que estás haciendo ahi? 
R: Usar comboBoxTrvList.

P: ¿Que puede haber de malo en eso?
R: Que no se haya hecho new del puntero

P: Pero si es parte de mi fichero ui! Eso significa que es culpa de Qt
R: No, eso significa que no has llamado a setupUi.
   Haz setupUi(this) en la primera linea del constructor

P: Pero entonces no compila!
R: Porque en el setupui.ui dices que quieres que tu padre sea un QDialog
   y luego en setup.h usas un QWidget. Haz que la clase Setup sea un QDialog

P: Pero entonces sigue sin arrancar!
R: El señor gdb te servirá para ver que tienes un bucle infinito en el
   que Klog::readConf llama a Klog::slotKlogSetup que llama a Klog::readConf

El como arreglar este último problema ya es cosa tuya.

Albert


More information about the Kde-devel-es mailing list