Newsgroup: it.comp.lang.c
Titolo: Quiz Interessante sul core dump

Ciao a tutti,
ho un quiz interessante su come produrre un core dump
che apre la strada a delle riflessioni:
        Scrivere il piu' piccolo programma C e/o C++
        (ANSI-C e/o K&R se volete essere pignoli) che
        produce un core dump.
"piccolo" nel senso di numero di caratteri del codice
sorgente. Non e' ammesso l'uso del precompilatore.
Ad esempio (vedere abort(3) e signal(7)):
        main(int a,char**b){abort();}
e' un buon risultato ma non il migliore !
Il piu' piccolo e' _veramente_ piccolo ;-)
buon divertimento
        g. 
-- 
Gianluca Puggelli
skype:pugg1138

        produce un core dump.
Quiz *interessante* ?

 Il piu' piccolo e' _veramente_ piccolo ;-)
questo sul mio lo fa, ma non saprei dire se lo fa ovunque.
main(){main();}
-- 
blog:  
http://www.akropolix.net/rik0/blogs
 | Uccidete i filosofi,
site:  
http://www.akropolix.net/rik0/
      | tenetevi riso e
forum: 
http://www.akropolix.net/forum/
     | bacchette per voi.


Ciao Mc,
a questa soluzione non ci avevo pensato. Fa core cump per
stack overflow dato che fai infinite chiamate ricorsive. Sono
sicuro che fa core ovunque.
Con 14 caratteri e' un'ottima soluzione ma non e' la piu'
piccola.
ciao
     g


 piccola.
15 caratteri, non ho contato il ;


http://groups.google.it/groups/search?q=shortest+prog+to+dump+core&hl=it&
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it


Andrea, era o no interessante ?
Non sapevo che fosse stato gia' risolto e analizzato in dettaglio.
La mia soluzione e' "main;" in tutti i compilatori che ho usato il
linker non riconosceva l'errore.
ciao
  g


 linker non riconosceva l'errore.
In VC8 viene generato un warning (stack overflow) e l'ottimizzatore 
rimuove completamente la chiamata ricorsiva (poiché inutile).
Il quesito non č ben posto.
Kiuhnm

 
http://groups.google.it/groups/search?q=shortest+prog+to+dump+core&hl=it&
Non avevo pensato a "". Ma pensandoci era ovvio.


 Andrea, era o no interessante ?
Direi "per nulla".


 ho un quiz interessante su come produrre un core dump
Perdonate l'ignoranza, ma il core dump è la stampata della memoria al 
momento dell'abort (o come lo si vuol chiamare) del programma, giusto? 
Due domande:
1) quale memoria? Lo heap? Lo stack? Altro?
2) come cavolo si fa a capire qualcosa da quel marasma di cifre 
esadecimali in colonna????

 esadecimali in colonna????
3) Ieri ho letto del codice C++ e non c'ho capito niente.
Come si fa a capire qualcosa da quel marasma di lettere?
Queste due domande ammettono la stessa risposta.
Kiuhnm

Massimo Soricetti ha scritto:

non c'è (integrata o esterna) una utility chiamata disassemblatore ?
Ovvio che decodificare il macchina, a parte Kiuhnm forse, ci si 
diventa matti. Col disassemblatore almeno daresti in pasto gli 
esadecimali producendo un codice assembly (molto spartano, 
immagino, tipo con nomi automatici di qualsiasi variabile, se 
alcuno). Almeno, così erano decenni fa, poi non ho mai più 
disassemblato niente. Forse oggi, ammesso che nell'exe hai 
inserito tutte le info di debugging o cmq ottemperato a altre 
specifiche ancora più evolute di auto-descrizione del codice 
(tipo quelle di .net, per esempio), esistono disassemblatori in 
grado di ripescarle e darti un assembly più espressivo. Cmq, 
anche l'assembly più basilare è un po' più umano del macchina, 
dove non capisci manco cosa è un dato e cosa un opcode senza 
consultare l'indice del manuale a ogni byte.
Ah ... occhio che se il codice non è completamente opensource (o 
GPL), retroingegnerizzare non è considerato legale. Lo dico nel 
caso avessi intenzioni non di hobby/studio, ma commerciali e di 
distribuzione.
ciao
Soviet

 esadecimali in colonna????
Dipende da come e dove sviluppi, ma i debugger sono spesso in grado di
analizzare determinati core dump.


 Queste due domande ammettono la stessa risposta.
Risposta troppo acida. Non farci caso, oggi è stata una giornata molto 
stressante.
Kiuhnm

 esadecimali in colonna????
Con un debugger. In genere i sistemi operativi che effettuano il core
dumping hanno debugger in bado di lavorare indifferentemente sulla
memoria o per l'appunto su core dump.
Ciao,
Nicola