Buonasera ragazzi,
ho un grave problema. Ho avuto un crash al pc e dopo il ripristino non trovo più il file.ino su cui stavo lavorando da qualche mese.
In una cartella (Temp\build361276436931085611.tmp) ho trovato il mio file ma con estensione:
cpp.d
cpp.eep
ccp.elf
cpp.hex
cpp.o
Con visual studio ho provato ad aprire il file con estensione .hex ma vedo tutte le righe di codice in esadecimale, quindi non capisco nulla.
C’è un modo, anche il più estremo, per poter risalire al codice originale?
gpb01:
... NO, mi spiace, quelli sono i files che genera il compilatore e ... al tuo sorgente non ci torni
Però nella directory di compilazione, tipicamente "tmp/buildquacosa" viene copiato anche il codice sorgente dello sketch che dovrebbe essere disponibile come file .cpp, inoltre il file .elf dovrebbe essere comprensivo delle informazioni di debug quindi contiene anche il sorgente.
Il file .elf l'ho trovato ma non so come aprirlo. Ho provato ad aprire il file con word, riesco a leggere i commenti e le spaziature più o meno corrette, ma il codice viene visualizzato con caratteri strani non comprensibile.
Usa sempre un editor di testo ASCII (es. notepad), mai cose come word o simili ...
Come ti ha detto Astro, FORSE, nel file .elf c'è anche il codice sorgente (... che viene usato dal debugger), ma certo ... non ti aspettare che sia li bello chiaro e pulito !
E' sicuramente frammezzato da altre cose, quindi ... olio di gomito, buona volontà, tanti copia/incolla e ... sempre FORSE, riesci a ricostruire il tuo sorgente.
gpb01:
Come ti ha detto Astro, FORSE, nel file .elf c'è anche il codice sorgente (... che viene usato dal debugger), ma certo ... non ti aspettare che sia li bello chiaro e pulito !
Ho provato adesso ad aprire l'elf generato da Arduino con l'elf editor/viewer di MPLABX, confermo che contiene integralmente il sorgente, però c'è usare molto, ma molto, olio di gomito per ripulirlo e rimettere assieme i vari pezzi.
In alternativa si può usare avr-objdump, è presente nella cartella del compilatore avr-gcc fornito con Arduino, da riga di comando digitando "avr-objdump -S miofil.elf > quellochetipare.txt" per ottenere un bel file ascii con dentro tutto il sorgente in assembly e relative righe C da cui è tratto.
Anche con avr-objdump serve molto di olio di gomito per ripulire il tutto, oltre a molto tempo, però potrebbe valerne la pena se il codice perso sono molte righe.
Ho provato a usare avr-objdump, ma appena apro il file avr-objdump.exe si apre la schermata nera e si richiude subito da solo senza darmi la possibilità di scrivere nessuna riga di comando. Sai che problema posso avere? Non l’ho mai usato.
Ho scaricato e installato anche MPLABX per IDE, ho provato a importare il file .elf, ma nella sezione family e device non ho capito cosa inserire (allego immagine). Poi darmi una dritta per come procedere?
avendo arduino mega ADK, devo utilizzare PIC32MX795F512H nella sezione device. Ho provato a terminare l'importazione del file, ma mi da problemi di importazione.
Come porto fare a importare correttamente il file?
Ho provato a usare avr-objdump, ma appena apro il file avr-objdump.exe si apre la schermata nera e si richiude subito da solo senza darmi la possibilità di scrivere nessuna riga di comando.
Hai inserito solo il nome del comando o tutta la stringa che ti aveva specificato Astrobeed?
Prima di tutto devi installare il plugin per la gestione dei file .elf, altrimenti te li apre solo come file di programmazione, poi non ha alcuna importanza quale micro gli dici di abbinare al file, tanto è per AVR e non per PIC.
Una volta che ti ha creato il nuovo progetto dentro ci trovi tutto il sorgente, anche le librerie utilizzate, però dovrai fare un grosso lavoro di pulizia e, ovviamente, tutti i commenti che avevi inserito sono persi.
adamo:
[…] su cui stavo lavorando da qualche mese.
Mi spiace, so che è un po’ antipatico sentirselo dire, ma per un lavoro di mesi (anche solo di ore in realtà) è un’ottima idea fare un backup. Io per il codice su cui ho passato molto tempo, addirittura stampo il listato.
Ciao ragazzi,
ho provato ad eseguire il comando avr-objdump -S miofil.elf > quellochetipare.txt, ma purtroppo il file txt ottenuto è quasi illeggibile. tornare al codice è quasi impossibile. Almeno sono ignorante nella materia l’unica cosa che sono riuscito a ottenere è questo file allegato.
Con i vari software elencati non sono stato ingrado di ottenere qualcosa che si assomigliasse al mio codice.