2015-03-19 17 views
8

Sto cercando di leggere e comprendere la gestione della memoria del kernel Linux (in particolare defrag \ compaction \ migration).Come de-ottimizzare il kernel Linux e compilarlo con -O0?

Quindi, spengo l'ottimizzazione per la dimensione in .config (utilizzando make menuconfig ovviamente) e compila ... Questo mi lascia con un kernel ancora ottimizzato.

NOTA: Quando dico kernel ottimizzato, voglio dire che quando uso gdb e dico next che salterà in giro. Non voglio quello, voglio essere in grado di seguire il codice linea per linea proprio come farei con un semplice mondo ciao.

Successivamente, modifico lo Makefile e lo scambio -O2 con -O0 e ciò causa la rottura delle cose.

Ho trovato this, ma non so quali file desidererò perché non so fino a dove arriverà la tana del coniglio.

Esiste un'opzione più generica che è possibile utilizzare? Capisco i concetti di compattazione della memoria; tuttavia, voglio vedere dove accade tutto e come accade esattamente.

+0

@EdHeal: Non è ancora un pesce d'aprile. Si prega di mantenere il tuo commento costruttivo. –

+0

@BenVoigt - IMHO è una domanda stupida e quindi merita una risposta "spiritosa" –

+0

@EdHeal grazie ... c'è una pagina man che mi puoi indirizzare almeno? – SailorCire

risposta

4

Non è possibile de-ottimizzare il kernel. Potreste essere in grado di de-ottimizzare alcune funzioni, come questo:

void __attribute__((optimize("O0"))) foo(unsigned char data) { 
    // unmodifiable compiler code 
} 

Ma il kernel nel suo complesso richiede -O2 perché il codice stesso è scritto con le ipotesi che alcune funzioni saranno ottimizzate in un certo modo.

Scusa, ma è davvero necessario conoscere la dimensione della tana del coniglio che si desidera abbattere.

+1

Possiamo impostare l'ottimizzazione come '-O1' invece' -O0'? – skytree