Отслеживание загрузки файла ELF

Можно ли отследить загрузку исполняемого файла ELF от ввода имени программы и нажатия клавиши ввода до выполнения основной функции? Если да, то как это сделать?


person scdmb    schedule 25.06.2011    source источник


Ответы (2)


man ld.so

расскажет вам о LD_DEBUG.

person bmargulies    schedule 25.06.2011

Как насчет стрэйса?

strace myprog myargs...

Это запустит вашу программу и распечатает все системные вызовы по мере их выполнения, что, как я полагаю, вы имели в виду под «трассировкой». Вы можете просто перестать смотреть на вывод, как только увидите, что выполняется ваш собственный код.

person John Zwinck    schedule 25.06.2011
comment
strace отслеживает системные вызовы только после начала выполнения программы. Он не отлаживает сам процесс загрузки ELF. - person Chris Eberle; 25.06.2011
comment
да, я пробовал это, но я думал, можно ли увидеть выполнение функций do_execve, search_binary_handler и т. д., которые выполняются до _start. - person scdmb; 25.06.2011
comment
Вы путаете вещи в ядре с вещами в процессе. - person bmargulies; 25.06.2011
comment
ld.so находится внутри процесса и выполняет загрузку эльфа. За исключением крошечного кусочка в ядре, который вы не можете отследить. - person bmargulies; 25.06.2011