Come ottenere il codice sorgente di habc usato da Ubuntu?

Come posso ottenere il codice sorgente per eglibc in un formato che consenta di passare attraverso il sorgente con gdb?

Ho provato ad usare apt-get source libc6-dev e questo funziona per ottenere il codice sorgente, ma penso che poiché le direttive pre-processore non sono state applicate, i numeri di riga che gdb non corrisponde alla sorgente che ho scaricato. Ciò lo rende meno utile quando si tenta di passare attraverso la fonte e guardare come funzionano le funzioni di libc.

Se vuoi veramente passare attraverso la fonte, ti consiglio di creare una libc senza ottimizzazione e senza rimuovere i binari.

Fortunatamente, dovrebbe essere facile: dato che hai già il sorgente, puoi creare pacchetti da esso. Dovrai assicurarti che la variabile DEB_BUILD_OPTIONS DEB_BUILD_OPTIONS contenga noopt per ottenere i binari nostrip e la nostrip per mantenere i simboli di debug e quindi build normalmente con debuild :

 sudo apt-get build-dep libc6 DEB_BUILD_OPTIONS="noopt nostrip" debuild -us -uc 

costruirai pacchetti costruiti con -O0 e senza i simboli di debug spogliati; puoi quindi installarli con dpkg e gdb raccoglierà i simboli di debugging. Come bonus aggiuntivo, gdb saprà anche dove trovare i file di origine, in modo da ottenere elenchi di origine.

Poiché non abbiamo modificato la versione dei pacchetti, la prossima volta che eseguirai un aggiornamento apt sostituirai questi pacchetti installati localmente con le versioni di archivio.

Puoi provare apt-get source -d libc6-dev e questo dovrebbe darti la fonte e il diff in formato deb. Quindi puoi decomprimerlo e dovrebbe dare i sorgenti anche in tar.gz decomprimerlo. Dovrebbe essere memorizzato nella directory in cui hai eseguito il comando apt-get.