Pagina 1 di 2

[C] Programma che funziona solo con il debug

Inviato: martedì 5 febbraio 2013, 16:59
da Malo
Ciao, sto facendo un programma in C usando Code::blocks. Il programma è composto da 3 file: main.c, lib.c, lib.h. Ho fatto che creare un progetto con code::blocks perchè è l'unico modo per poter effettuare il debug(altrimenti non lo fa). Non capisco proprio perché il programma se compilato e poi eseguito si pianta, mentre invece se eseguo il debug (sempre dopo averlo ricompilato ovviamente) tutto fila lisco e termina come dovrebbe. Cioè in pratica io schiaccio compile/exec e si pianta. Invece se imposto un breackpoint a caso e poi clicco su debug, una volta che lo eseguo tutto arriva alla fine tranquillo. Come mai? Ho ricontrollato tutto mille volte e non trovo errori quindi se con il debug funziona non vedo perché non dovrebbe senza! Come posso fare?

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 17:17
da dino
Potrebbe essere una questione di librerie che in debug le carica mentre in esecuzione no?

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 20:20
da Malo
potrebbe essere...come verifico però?

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 21:29
da dino
Questo non lo so... Non sviluppo ijn C da una vita

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 21:31
da Alessio89
Utilizzi estensioni, librerie o direttive proprietarie o macro proprietarie? Perché con lo standard ISO non esiste differenza fra debug e release. Se rimani sempre nello standard ISO allora controlla i range degli array e le operazioni sui puntatori.

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 22:10
da Malo
mah, diciamo che un errore ci deve essere per forza perchè se aumento la dimensione dell'imput mi fa in segmentation fault. Solo che non mi capacito proprio perchè con un input più basso in debug è ok, in release no. Le uniche librerie che uso sono stdio.h, stdlib.h e bon...

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 22:22
da Alessio89
in modalità debug potrebbero aver implementato un'allocazione della memoria e degli array in maniera differente. Ad esempio in modalità debug il compilatore potrebbe lasciare dello spazio fra un array e gli elementi successivi in modo che se vai fuori range il debugger è in grado di segnartelo invece che crashare rovinosamente.

Re: [C] Programma che funziona solo con il debug

Inviato: mercoledì 6 febbraio 2013, 22:30
da Malo
può essere quello allora...conta che sto lavorando su diverse matrici ed array tutti allocati in modo dinamico a seconda della dim dell'input...(non è complicato ma sto schiumando)
praticamente c'è un main loop ripetuto tot volte dove fa le sue cose, una di queste è caricare un array in una riga di una matrice. Non so perchè ma alla volta x che esegue questa operazione mi fa segmentation, le altre prima invece gli piace... :angry:

Re: [C] Programma che funziona solo con il debug

Inviato: giovedì 7 febbraio 2013, 3:05
da Alessio89
se vuoi prova a postare il codice. il C l'ho cacato di stricio ma tanto ha praticamente (99%) le stesse regole della parte procedurale del C++.

Re: [C] Programma che funziona solo con il debug

Inviato: giovedì 7 febbraio 2013, 9:12
da Malo
per me va bene! Faccio che postarti i 3 file così facciamo prima...ti ringrazio per la disponibilità :inchino:
tsp_ga.c
tsp_ga_lib.c
tsp_ga_lib.h