Estoy tratando de entender cómo Linux inicia un programa. Leí en alguna parte que alguna función en glibc llama a la función principal. Perfilando con callgrind y mirando los call-graphs en Kcachegrind, veo below main
que llama main. Pero no entiendo esto, una función no puede llamarse así. Entonces mi pregunta es qué función en el glibc realmente comienza la función principal. propia ayudaQué función en glibc llama a la función principal
8
A
Respuesta
11
Después de valgrind se encuentra esta explicación de la opción --show-por debajo de la principal:
Por defecto, trazas de la pila de errores no muestran las funciones que aparecen debajo principal porque la mayoría de las veces no es interesante C cosas de la biblioteca y/o gobbledygook. Alternativamente, si main no es presente en el seguimiento de la pila, las trazas de la pila no mostrarán ninguna función debajo de las funciones principales, como glibc's __libc_start_main. Además, si las funciones de tipo principal están presentes en la traza, están normalizadas como (debajo del principal), para hacer que la salida sea más determinista.
Como tal, a continuación principal no es la función que se llama principal, pero __libc_start_main.
Cuestiones relacionadas
- 1. Quién llama a la función principal en C
- 2. ¿Quién llama a la función principal en java?
- 3. Cómo saber qué función llama a otra
- 4. ¿Qué entra en la función principal?
- 5. ¿Qué significa "WINAPI" en la función principal?
- 6. Sigabrt en la función principal
- 7. ¿Con qué se llama la función asignada a setTimeout?
- 8. Obtener función principal
- 9. ¿Common Lisp equivalente a la función principal de Haskell? función
- 10. La función no se llama
- 11. Cocoa: int función principal
- 12. función count llama
- 13. función principal no devuelve nada. ¿Por qué?
- 14. error de la función que llama, [Una llamada a la función PInvoke desequilibró la pila]
- 15. Rompiendo la función principal de jQuery cada función
- 16. La función setTimeout de Javascript no llama a
- 17. Python cómo salir de la función principal
- 18. ¿Por qué std :: for_each (de, a, función) devuelve la función?
- 19. ¿Por qué pasar mutex como parámetro a una función a la que llama un hilo?
- 20. Función de inserción llama en GO
- 21. JavaScript window.opener llamada principal función
- 22. función que llama interior preg_replace eso dentro de una función
- 23. Función glibc para recuperar el nombre ejecutable actual?
- 24. ¿El .NET JIT integra una pequeña función que llama a otra función pequeña?
- 25. Necesita cita de norma sobre la legalidad de la función principal, como una función de plantilla
- 26. ¿Qué son las reglas de búsqueda cuando se llama a la función de lambda?
- 27. Necesito llamar a la función original desde la función desviada
- 28. Pasar la función puntero a miembro como puntero a función
- 29. La función del conjunto flexible no se llama
- 30. Comprobando si se llama a una función usando Mocha
__libc_start_main() Creo que, http://linuxgazette.net/issue84/hawk.html – user1399238
[ '__libc_start_main'] (http://refspecs.linuxbase.org/LSB_3.1.1/LSB-Core-generic /LSB-Core-generic/baselib---libc-start-main-.html) definido en la Base estándar de Linux. – birryree
También verifique estas preguntas: http://stackoverflow.com/questions/8668913/elf-binary-compiled-by-gcc-what-happens-from-entry-point-to-main y http://stackoverflow.com/ preguntas/524826/linux-es-es-posible-escribir-un-programa-de-trabajo-que-no-confía-en-la-libc – birryree