ciao, ho in manutenzione un'applicazione in C con molti file e, ammetto, di C conosco poco (quindi scusatemi in anticipo per l'ignoranza e eventuali boiate scritte); ogni 2 o 3 giorni questo software crasha e viene generato un core che ho provato a analizzare con GDB

lanciando gdb qdh64_stat core ottengo:
"Core was generated by `qdh64_stat'.
Program terminated with signal 11, Segmentation fault.
SEGV_MAPERR - Address not mapped to object
#0 0xc0000000002125f0 in <unknown_procedure> ()"


con bt (dovrebbe essere la lista dei frame) ottengo:
"#0 0xc0000000002125f0 in <unknown_procedure> ()
warning: Attempting to unwind past bad PC 0xc0000000002125f0
#1 0xc000000000178b70 in <unknown_procedure> ()"


in generale mi interesserebbe sapere che metodologia seguire per individuare gli errori in C

in Java (che di solito uso, magari non l'avete visto) con le eccezioni e l'elenco delle chiamate dei vari metodi/classi, è abbastanza facile

in C come posso fare?
insomma da dove partire e come fare per potere individuare nel codice l'errore?

il codice in manutenzione ha funzioni molto lunghe che mi sembrano assurde e difficili da analizzare ma ragiono alla luce delle mie esperienze in Java, magari in C si usa così per qualche motivo che mi sfugge

grazie, scusate l'ignoranza, se volete specifico meglio qualche punto ma quello che mi servirebbe è proprio un'idea sul metodo da seguire; intanto magari faccio delle ricerche per conto mio e provo a vedere con dei programmi semplici (creati da 0) come ci si muove, il problema grosso è anche essermi trovato direttamente (senza esperienze intermedie) davanti a questo blocco gigante di codice, molto disordinato e dispersivo

grazie