En GDB, puedo usar "info func_name de línea" para obtener la dirección de memoria de func_name, y luego usar "set $ PC = memory_address" para comenzar a depurar esta función. ¿Cómo hago lo mismo dentro de lldb? ¡Gracias por adelantado!¿Cómo encontrar la dirección de memoria de una función con lldb?
5
A
Respuesta
13
El comando en lldb es "búsqueda de imágenes". Creo que recientemente se agregó un ejemplo de "info func" < -> "búsqueda de imágenes" a la página de comandos lldb/gdb - http://lldb.llvm.org/lldb-gdb.html
p.
(lldb) im loo -n puts
1 match found in /usr/lib/system/libsystem_c.dylib:
Address: libsystem_c.dylib[0x0000000000011d9a] (libsystem_c.dylib.__TEXT.__text + 69850)
Summary: libsystem_c.dylib`puts
(lldb)
aunque esto es sólo mostrando el desplazamiento en libsystem_c.dylib aquí (0x11d9a) - para ver la dirección de la carga real que tendría que utilizar la opción "-v" para buscar la imagen que se mostrará la gama de direcciones que pone cubiertas. O usted puede hacer esto de manera más directa con la notación de la garrapata de vuelta en LLDB,
(lldb) reg read pc
rip = 0x0000000100000f2b a.out`main + 11 at a.c:3
(lldb) reg write pc `(void(*)())puts`
(lldb) reg read pc
rip = 0x00007fff99ce1d9a libsystem_c.dylib`puts
OK Tuve que desechar puts() porque LLDB necesario un prototipo de función aquí - no muy práctico, pero si se trata de una de sus propias funciones eso no es necesario:
(lldb) reg write pc `main`
(lldb) reg read pc
rip = 0x0000000100000f20 a.out`main at a.c:2
Cuestiones relacionadas
- 1. LLDB - Evaluar Dirección Registrar
- 2. Cómo capturar una función de grabación y llamada de memoria con la dirección de escritura
- 3. Cómo usar GDB para encontrar qué función corresponde a una dirección de memoria
- 4. Cómo imprimir la dirección de una función?
- 5. ¿Cómo puedo imprimir la dirección de memoria de una variable?
- 6. ¿Cómo encontrar símbolos en o cerca de una dirección de memoria determinada? (utilizando Visual Studio 2010)
- 7. dirección de memoria literal
- 8. ¿Cómo encontrar la dirección final de una función en un C prog?
- 9. ¿Cómo traducir una dirección de memoria virtual a una dirección física?
- 10. ¿Por qué una dirección de memoria comienza con 0x?
- 11. ¿Cómo encontrar la fuga de memoria en Java con JProfiler?
- 12. ¿Cómo obtener la dirección de memoria del montón de Java?
- 13. ¿Cómo obtener la dirección de una función miembro sobrecargada?
- 14. Llamar a una función a través de su dirección en la memoria en c/C++
- 15. ¿Hay alguna forma de encontrar la dirección de una referencia?
- 16. Cómo obtener una dirección de memoria específica usando C
- 17. ¿La primitiva tiene asignada una dirección de memoria?
- 18. ¿Cómo poner una variable en una dirección absoluta dada en la memoria (con GCC)
- 19. Puntero de función con GCC, asignando una dirección
- 20. ¿Cómo puedo obtener la dirección de memoria de una variable de JavaScript?
- 21. LLDB manual/documentación
- 22. equivalente LLDB de `po` en GDB en Xcode4.1?
- 23. ¿Cómo encontrar el número de puerto de la dirección IP?
- 24. Encontrar la dirección de memoria de un puerto paralelo en Linux
- 25. Cómo encontrar pérdida de memoria en una aplicación de Phonegap
- 26. Dirección de memoria de acceso en C#
- 27. ¿Encontrar una dirección IP pública en Python?
- 28. dirección de la función de plantilla C++
- 29. cómo obtener la dirección de memoria de una matriz numpy para C
- 30. gdb interpretar la dirección de memoria como un objeto