Problema lettura file .ino

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?

Grazie

... NO, mi spiace, quelli sono i files che genera il compilatore e ... al tuo sorgente non ci torni :frowning:

Guglielmo

P.S. : Non ricordo che contiene il .d ... prova a buttarci un occhio, ma non credo, sarà un file binario ... :roll_eyes:

gpb01:
... NO, mi spiace, quelli sono i files che genera il compilatore e ... al tuo sorgente non ci torni :frowning:

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.

Nella cartella ho trovato i file:

  • miofile.cpp.d
  • miofile.cpp.eep
  • miofile.ccp.elf
  • miofile.cpp.hex
  • miofile.cpp.o

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.

Qualche idea?

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.

Guglielmo

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.

Astro, grazie per le info.

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?

Grazie.

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?

adamo:
Astro, grazie per le info.

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?

avr-objdump -S miofil.elf > quellochetipare.txt

adamo:
avendo arduino mega ADK

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.

leo72:
Hai inserito solo il nome del comando o tutta la stringa che ti aveva specificato Astrobeed?

Esatto, avr-objdump va lanciato da riga di comando utilizzando cmd di Windows e non direttamente da Windows.

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.

Grazie per le info che mi avete dato.

quellochevoglioio.txt (307 KB)