2012-11-05 13 views

risposta

6

3 spiegazioni possibili, cercano di identificare la battuta:

  1. Browser è abbastanza intelligente per visualizzare la fonte ricostruito (decompilato) dai codici di byte CompiledMethod. Suggerimento: in questo caso perdi tutti i commenti
  2. c'è un percorso di ricerca per i file sorgenti, e uno si trova da qualche parte sul tuo disco
  3. Pharo sta cambiando così velocemente che ogni sorgente si trova ora nel file .changes

Per verificare 1., è possibile provare a sfogliare i riferimenti a Decompiler (ci sono troppi usi a mio piacimento).

Per verificare 2., si potrebbe iniziare la navigazione implementatori di #openSourceFiles

Per verificare 3., si potrebbe valutare questo frammento di codice:

| nSources nChanges | 
nSources := nChanges := 0. 
SystemNavigation default allBehaviorsDo: [:b | 
    b selectorsDo: [:s | 
     (b compiledMethodAt: s) fileIndex = 1 
      ifTrue: [nSources := nSources+1] 
      ifFalse: [nChanges := nChanges+1]]]. 
^{nSources. nChanges} 
8

Il file immagine contiene solo il codice compilato, non il codice sorgente originale. Il file delle modifiche contiene il codice sorgente per le cose che hai aggiunto tu stesso al sistema, ma non il codice sorgente per le classi di sistema esistenti. Per ottenere il codice sorgente per le classi di sistema esistenti è necessario il file delle fonti.

Detto questo, Smalltalk può decompilare il codice e produrre quello che sembra codice sorgente se il file sorgenti non è disponibile. Questo codice mancherà nomi di variabili, commenti e spaziatura adeguati. Davvero non vuoi usare il codice sorgente decompilato, quindi devi accedere al file delle fonti.

4

È anche possibile che Pharo scarichi automaticamente PharoV10.sources.

+0

Nel frattempo ho notato che Pharo 2.0 sembra generare o scaricare automaticamente le fonti. Se avvio l'immagine Pharo 2.0 senza fonti, un file immagine si verifica all'improvviso nella cartella VM, mentre le vecchie immagini Pharo (1.4) hanno mostrato un messaggio di errore durante l'avvio. – user1801323

+0

Sì, questo è il comportamento corretto. – camillobruni

Problemi correlati