Error de lista de openjdk-7 gdb: "main.c: no existe tal archivo o directorio"

Error de lista de openjdk-7 gdb: "main.c: no existe tal archivo o directorio"

Actualmente estoy teniendo problemas para depurar openjdk en Trusty Tahr. Ya lo instalé opejdk-7-jdky openjdk-7-dbg. Cuando lo emito, gdb javaveo que lee los símbolos correctamente, pero cuando le pido que enumere el código, se queja de que no se encuentra main.c. Me las arreglo para que la depuración funcione en CentOS y podría enumerar el archivo main.c pero quiero que funcione en Ubuntu ya que es mi distribución principal.

Salida bruta:

GNU gdb (Ubuntu 7.7.1-0ubuntu5~14.04.2) 7.7.1
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from java...Reading symbols from /usr/lib/debug//usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java...done.
done.
(gdb) l
85  ../../../../src/share/bin/main.c: No such file or directory.
(gdb) 

¿Necesito hacer algo adicional para colocar main.c donde se pueda encontrar?

Respuesta1

Debe modificar source pathel utilizado por gdb para encontrar el archivo fuente.

De acuerdo amanual del gdb:

Los programas ejecutables a veces no registran los directorios de los archivos fuente a partir de los cuales fueron compilados, solo los nombres. Incluso cuando lo hagan, los directorios podrían moverse entre la compilación y la sesión de depuración. GDB tiene una lista de directorios para buscar archivos fuente; esto se llama ruta de origen.

Primero debe averiguar dónde se encuentra el archivo fuente en su sistema:

 locate main.c

y luego usar dir dirnameel comando para:

Agregue el nombre de directorio al frente de la ruta de origen. Se pueden asignar varios nombres de directorio a este comando, separados por ':' (';' en MS-DOS y MS-Windows, donde ':' suele aparecer como parte de los nombres absolutos de archivos) o espacios en blanco. Puede especificar un directorio que ya esté en la ruta de origen; esto lo hace avanzar, por lo que GDB lo busca antes.

Lea atentamente el enlace del manual de gdb anterior para saber cómo se source pathutiliza.

información relacionada