Cómo ver archivos principales
Por ejemplo, se produce un error cuando se ejecuta el programa cmm_test_tool y el archivo principal generado es el siguiente:
-rw-r -r- 1 root cmm_test_tool.c p>
-rw- r -r- 1 raíz
cmm_test_tool.o
-rwxr-xr-x 1 raíz cmm_test_tool
-rw- -- 1 raíz
núcleo.19344
-rw--- 1 raíz núcleo.19351
-rw-r- 1 raíz
cmm_ test_tool.cfg p>
-rw-r- 1 raíz cmm_test_tool.res
-rw-r- 1 raíz
cmm_ test_tool.log p>
[root@ AUTOTEST_SIM2 mam2cm]#
Luego puede usar el comando gdb para encontrarlo, el parámetro uno es el nombre de la aplicación, el parámetro dos es el archivo principal y luego ejecutar
gdb
cmm_test_tool core.19344 Los resultados son los siguientes:
[root@AUTOTEST_SIM2 mam2cm]# gdb cmm_test_tool core.19344
GNU gdb Red Hat
Linux (5.2 .1-4)
Copyright 2002 Free Software Foundation, Inc.
GDB es gratuito
software, protegido por la Licencia Pública General GNU, de nada
Bajo ciertas condiciones
Cámbielo y/o distribuya copias del mismo. Ingrese
"mostrar garantía" para obtener más detalles.
Este GDB está configurado como
"i386-redhat-linux"...
El kernel es generado por `./cmm_test_tool ".
Programa
terminado con la señal 11, Fallo de segmentación.
Lectura de símbolos de
/lib/i686/libpthread.so.0 ...hecho.
Símbolos cargados para
/lib/i686/libpthread.so.0
Lectura de símbolos de
/ lib/i686/libm.so.6...done.
Símbolos cargados para /lib/i686/libm.so.6
Lectura de
símbolos de /usr/lib/libz.so.1...done.
Símbolos cargados para
/usr/lib/libz.so.1
Leyendo símbolos de
/usr/lib/libstdc++.so.5...done. Cargado los símbolos de
/usr/lib/libstdc++.so.5
.Leyendo símbolos de
/lib/i686/libc.so.6...done.
Símbolos cargados de /lib/i686/libc.so.6 p>
Símbolos cargados para
/libgcc_s .so.1.done lib/libgcc_s.so.1
Lectura de símbolos de /lib/ld-linux.so. 2...listo.
Símbolos
cargados para /lib/ld-linux.so.2
Leyendo símbolos de /lib/ld-linux. so.2...done.
Leyendo símbolos de
/lib/libnss_files.so.2...done.
Símbolos cargados para /lib /libnss_files.so.2
#0
p>
0 ×4202cec1 en __strtoul_internal () de
/lib/i686/libc.so .6
(gdb)
Vaya al indicador de gdb y escriba dónde encontrar la ubicación y la pila donde ocurrió el error, de la siguiente manera:
(gdb) donde
#0 0×4202cec1 en __strtoul_internal () de
/lib/i686/libc.so.6
#1 0×4202d4e7 en strtoul ( ), de
/lib/i686/libc.so.6
p>#2 0×0804b4da en GetMaxIDFromDB (get_type=2,
max_id= 0×806fd20) en cmm_test_tool.c:788
#3 0×0804b9d7 en ConstrctVODProgram
(vod_program=0×40345bdc) en cmm_test_tool.
#4 0×08
04a2f4 en
TVRequestThread (arg=0×0) en cmm_ test_tool.c:372
#5 0×40021941 en
pthread_start_thread () de /lib /i686/libpthread.so.0
(gdb)
En este punto, se puede ver que la ubicación del error del archivo es la función GetMaxIDFromDB
, y los dos parámetros son 2 y 0×806fd20, esta función se encuentra en la línea 788 del código fuente, en base a esto, podemos encontrar la causa raíz del problema y solucionarlo.