Newsgroup: it.comp.lang.c
Titolo: Slightly OT - meta

Salve NG,
visto che ultimamente l'NG ha un calo di post non mi sento troppo in colpa ad aprire un thread leggermente OT ;-)
Non so se avete presente la frase famosa "sono due i principali problemi nel programmare: la cache, dare i nomi alle cose, e gli errori di più o meno uno". E' più di un giorno che sono alle prese con un bug *sicuramente* banale ma che non riesco a sistemare: sto cercando il problema ovunque ma proprio non riesco a trovarlo; sono così disperato che ho iniziato ad aggiungere coefficenti moltiplicativi a destra e a manca, mi sembra di essere tornato a quando avevo appena iniziato a programmare in qBasic XD
Vi capitano mai giornate simili? Come risolvete?
Ciao!

 Vi capitano mai giornate simili? Come risolvete?
 
Birra
 
 
A parte gli scherzi, a volte mi aiuta prendere carta e penna, fare 
qualche schema della memorizzazione dei dati in memoria, dei passi degli 
algoritmi...
Si insomma, cerco di ridurre all'essenziale la descrizione di ciň che 
deve essere eseguito.
 
Riccardo

 deve essere eseguito.
 
Però senza sapere che tipo di problema ha è difficile suggerire un 
approccio.


Grazie ad entrambi, in effetti la birra di solito aiuta (e quando non aiuta almeno ci si sente più leggeri!) :-)
Per il resto ho risolto, ma solo parzialmente. Anche io mi ero messo lì con carta e penna (sì, anch'io faccio fuori una buona risma di carta in men che non si dica) ma alla fine il problema non era di concetto: anche se le operazioni erano giuste, in qualche situazione alcune erano effettuate tra unsigned ints e double, e i risultati erano imprevedibili  (su un filtro immagine (quindi tutte le variabili erano interi senza segno) alcune operazioni erano svolte in uno spazio parametrico polare (quindi tutte operazioni trigonometriche in virgola mobile) e molte di esse erano macro..); sto riscorrendo tutte le formule per mettere ordine, ma sono fiducioso ;)
Come al solito, tutti i problemi sono semplici quando si conosce la soluzione :)
Grazie del supporto!
Ciao!

 e double, e i risultati erano imprevedibili
 
Uno step con gdb non ti mostra il problema?


Infatti alla fine così l'ho scoperto :)
Il fatto è che era un sequenza in cascata di algoritmi per me era abbastanza complessi, quindi ero praticamente sicuro di averne sbagliato uno o due, e non entravo proprio a vedere se le singole moltiplicazioni erano giuste (coi risultati normalizzati poi non è facile capire che all'interno qualcosa è andato storto): oltretutto sono sempre oltremodo attento a mettere i giusti tipi per ogni cosa, per cui non avevo proprio preso in considerazione il problema... Detto così è proprio un errore da newbie :(
Speriamo sia solo il picco di stress pre-ferie! :-)
Ciao!

 Detto così è proprio un errore da newbie :(
 
Va be' può capitare a tutti! :)
 
Forse ti sarebbe stato di aiuto, in questo specifico caso, avere degli 
unittest.
Io mi son trovato molto bene con check[¹] magari, se non la conosci già, 
potresti dargli un'occhiata.
 
HTH,
 
[¹] 
http://check.sourceforge.net/
 
 
-- 
 Daniele Tricoli 'Eriol'
 
http://mornie.org
 

 
 
Gli unit-test ce li avevo, ma non erano *così* a basso livello. Oltretutto nello specifico il test funzionava, visto che non faceva conversioni di tipo.
Comunque, visto che tanto è roba che facevo nel "tempo libero" magari provo a dargli un senso e metterla da qualche parte in rete, almeno vi fate un'idea ;)
Ciao!