Bene, poiché gli errori si verificano generalmente mentre si fa qualcosa, la soluzione migliore è cercare la pagina man
per "qualcosa".
Ad esempio, se si ottiene di nuovo un errno
di 34 dal fscanf()
chiamata, si dovrebbe prima fare:
grep 34 $(find /usr/include -name '*errno*h')
di capire che cosa l'errore è stato:
/usr/include/bits/errno.h:#define ERANGE 34 /* Math result not representable. */
/usr/include/asm-generic/errno-base.h:#define ERANGE 34 /* Math result not ... */
Poi, guardando alla pagina man
per fscanf()
, vedi:
ERANGE - The result of an integer conversion would exceed the size
that can be stored in the corresponding integer type.
e tu (si spera) riuscirai a capirlo da lì.
Se si desidera un elenco degli errori e (brevi) descrizione, modificare il grep
sopra come segue:
grep define $(find /usr/include -name '*errno*h') | less
e sfogliare l'uscita.
E, se ancora non si conosce l'errore e cosa lo ha causato (le descrizioni sono un po 'laceranti, sono d'accordo), lo avrei solo bloccato (ad esempio, EADDRNOTAVAIL
) in quella piccola finestra di dialogo in nell'angolo in alto a destra del browser e avrai indietro qualcosa come this (o molti altri pagine meravigliose):
Impossibile assegnare richiesta indirizzo
si sta tentando di bind(2)
ad un indirizzo locale quello non è locale. Ad esempio, se gli indirizzi IP di una macchina sono 127.0.0.1
e 1.2.3.4
e stai tentando di eseguire il binding a 1.2.3.5
, otterrai questo errore. Verifica che l'indirizzo che stai cercando di associare esista sulla macchina da cui stai cercando di collegarlo.
Questo errore può verificarsi anche se si sta eseguendo una "connessione pre-associata", in cui si esegue il binding prima a una porta locale, quindi si effettua una connessione in uscita con un socket. Se la porta locale è già connessa all'IP e alla porta remota (ad esempio, esiste già una socket socket identica), riceverai questo errore (valore = 99 su Linux).
4 pagine contengono dei collegamenti a EADDRNOTAVAIL
:
- bind (2)
- connect (2)
- setsockopt (2)
- pacchetto (7)
Vai avanti, provare con altri valori di errore, così, non è troppo male.
È sei utilizzando Firefox, giusto? :-)
Sì sono d'accordo con te Alex ... ma la sezione di errori in ogni pagina l'uomo ha ancora la stessa linea singola. .. :( – codingfreak
@codingfreak Molti di essi possono essere uguali, ma non necessariamente. Ad esempio, 'EPERM' è diverso per' man 2 open' e 'man 2 pthread_create' e deve essere gestito in modo diverso. –