Cuando me detengo en un punto de quiebre en gdb, solo muestra el nombre de archivo.cpp. ¿Cómo puedo ver la ruta completa de este archivo?¿Cómo ver la ruta completa de un archivo en GDB?
15
A
Respuesta
18
Utilice el comando info source
para obtener información para el marco de pila actual.
Aquí es un ejemplo de su producción:
(gdb) info source Current source file is /build/gtk+2.0-LJ3oCC/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c Located in /home/sashoalm/Desktop/compile/gtk+2.0-2.24.30/modules/input/gtkimcontextxim.c Contains 1870 lines. Source language is c. Producer is GNU C11 5.3.1 20160225 -mtune=generic -march=i686 -g -g -O2 -O2 -fstack-protector-strong -fPIC -fstack-protector-strong. Compiled with DWARF 2 debugging format. Does not include preprocessor macro info.
1
En Python scripting
Para aprender Python scripting, o si desea ver sólo la ruta completa y nada más:
class Curpath(gdb.Command):
"""
Print absolute path of the current file.
"""
def __init__(self):
super().__init__('curpath', gdb.COMMAND_FILES)
def invoke(self, argument, from_tty):
gdb.write(gdb.selected_frame().find_sal().symtab.fullname() + os.linesep)
Curpath()
Uso:
curpath
0
Excelente respuesta de Ciro Santill. Sin embargo, el script necesitaba una pequeña corrección para trabajar con mi gdb 8.0.1.
También lo cambié para copiar el texto al portapapeles para que pueda usarlo en vim directamente. Funciona muy bien con el complemento file_line.vim. Este es un ejemplo del contenido del portapapeles producido por el guión:
/home/ops1/projects/test01/main.cpp:5
El guión es el siguiente:
import pyperclip
class Clippath (gdb.Command):
"""print absolute path"""
def __init__(self):
super(Clippath, self).__init__("clippath", gdb.COMMAND_USER)
def invoke(self, arg, from_tty):
symtabline = gdb.selected_frame().find_sal()
pyperclip.copy(symtabline.symtab.fullname() + ":" + str(symtabline.line))
Clippath()
Éstos son los pasos para hacer que todo funcione:
- Instalar pyperclip biblioteca python sudo zypper en python3-pyperclip
- Guarde el script anterior en un archivo, digamos file-path.py y cópielo a ~/.gdb
- actualización ~/.gdbinit con la adición de las siguientes líneas: source ~/.gdb/file-path.py
- Ahora puede copiar la ruta y la línea en el portapapeles con
clippath
en GDB
Y lea más sobre GDB Python API - link
Cuestiones relacionadas
- 1. Obtener ruta de archivo completa en java
- 2. Cómo obtener la ruta completa de StreamWriter
- 3. ¿Cómo encontrar la ruta completa del archivo .pst de Outlook?
- 4. ¿Cómo devolver la ruta completa de SaveFileDialog?
- 5. ¿Cómo puedo usar "ver" GDB?
- 6. Crear ruta completa automáticamente al escribir en un nuevo archivo
- 7. ¿Cómo expandir un enlace simbólico a la ruta completa de un nombre de archivo en vim?
- 8. Eliminar un directorio de la ruta completa del directorio
- 9. ruta completa del archivo Xcode 4
- 10. Ruta completa desde la entrada de archivo usando jQuery
- 11. creación de nombre de archivo de ruta completa en python,
- 12. visión fuente no muestra la ruta completa de un archivo en la barra de título
- 13. Cómo recorrer archivos (ruta completa) en PowerShell
- 14. gcc/gdb: ¿Cómo incrustar la ruta absoluta al archivo fuente en la información de depuración?
- 15. Cómo anexar un directorio a la ruta de la biblioteca al cargar un archivo core en gdb en Linux
- 16. Obteniendo la RUTA completa del archivo cargado - PHP
- 17. ¿Cómo obtengo la ruta completa para un argumento de línea de comandos de nombre de archivo?
- 18. ¿Cómo puedo ver la salida de printf dentro de gdb?
- 19. cómo obtener la ruta completa exacta a un archivo en Perl
- 20. ¿Cómo puedo expandir la ruta completa del archivo actual para pasarlo a un comando en Vim?
- 21. ¿Cómo obtengo el directorio de la ruta completa de un archivo?
- 22. Ver la ruta del archivo en un administrador de archivos con la intención de Android
- 23. Abrir archivo por su ruta completa en C++
- 24. ¿Cómo incluir la ruta completa en Rails 3 link_to statement?
- 25. ¿Cómo obtener una parte de la ruta completa en C#?
- 26. Localización de un archivo en la ruta
- 27. git ver fusión completa diff
- 28. Cómo ver la consulta completa de SHOW PROCESSLIST
- 29. Obtener la ruta completa sin el nombre de archivo de la ruta que incluye el nombre de archivo
- 30. eliminar ruta completa, mantenga el nombre de archivo solamente
Este comando muestra información sobre el punto de interrupción * actual *, y en ocasiones lleva mucho tiempo alcanzar un punto de interrupción en una función específica. En este caso, puede ser útil forzar un salto a esa función con 'jump'. –
mMontu