linuxcnc/docs/help/rtfaults_es.adoc
Jérémie Tarot (silopolis) 36b8754d4a docs: en/es/fr sync
docs: en/es/fr sync: src/*
docs: en/es/fr sync: code/*
docs: en/es/fr sync: common/*
docs: en/es/fr sync: config/*
  Also add TODO to backtranslate linuxcnc2hal_fr.adoc, or make anything with it...
docs: en/es/fr sync: drivers/*
docs: en/es/fr sync: examples/*
docs: en/es/fr sync: gcode/*
docs: en/es/fr sync: getting-started/*
docs: en/es/fr sync: gui/*
docs: en/es/fr sync: hal/*
docs: en/es/fr sync: install/*
docs: en/es/fr sync: integrator/*
docs: en/es/fr sync: ladder/*
docs: en/es/fr sync: lathe/*
docs: en/es/fr sync: motion/*
docs: en/es/fr sync: plasma/*
docs: en/es/fr sync: remap/*
docs: en/es/fr sync: tooldatabase/*
docs: en/es/fr sync: user/*
docs: en/es/fr sync: Master_*

docs: en/es/fr sync: README*

docs: en/es/fr sync: help/*

docs: en/es/fr sync: get ready for po4a migration

Don't run man pages test on adoc files
Rename *.po files to all lower case for consistency
Ignore glossaries as they're still way out of sync
Ignore fr/en files with missing master en files
2022-06-03 15:26:33 +02:00

66 lines
2 KiB
Text

:lang: en
= RT Faults
Encontrar información del número de línea para fallos en componentes de
tiempo real
1. Obtenga una versión de LinuxCNC que imprima la dirección de
instrucción que falla (se incluye en esta versión de LinuxCNC)
2. Incluya información de depuración en sus módulos. +
Para módulos incorporados, debajo de la definición de EXTRA_CFLAGS en
Makefile, agregue:
+
EXTRA_CFLAGS += -g
+
Para módulos independientes, agregue la misma línea justo encima de la
línea:
+
ifeq ($(BUILDSYS),kbuild)
+
y (re)compile el componente
3. Ejecute hal hasta que ocurra el fallo. +
*NO SALGA DE LA SESIÓN HAL TODAVÍA*. +
Primero se debe encontrar el inicio del módulo (paso 5).
4. Anote la dirección IP (puntero de instrucción) en dmesg. +
p.ej.:
+
RTAPI: Task 1[c2800000]: Fault with vec=14, signo=11 ip=c93dc01a.
^^^^^^^^
5. Encuentra el módulo que contiene la IP que provoca el fallo.
+
$ cat /proc/modules
motmod 142230 0 - Live 0xc93df000
falla 1626 1 motmod, Live 0xc93dc000
hal_lib 30517 2 motmod,fault, Live 0xc93d5000
+
Ahora puedes salir de hal/emc2.
6. Reste el inicio del módulo de la IP con fallo (en este caso, 0x1a) +
Entre otras formas de hacer esto, puedes usar el shell:
+
$ printf "0x%x\n" $((0xc93dc01a-0xc93dc000))
0x1a
7. Use addr2line para descubrir la línea del código fuente:
+
$ addr2line -e emc2-dev/src/fault.ko 0x1a
/usr/src/linux-headers-2.6.32-122-rtai/hal/components/fault.comp:9
+
Ignora cómo el nombre del directorio es incorrecto y mira si esto te
ayudó localizar el problema:
+
fault.comp:9 *(int*)0 = 0;
+
¡Si! Parece que era eso.
+
Tenga en cuenta que incluso si no agrega el argumento de dirección a addr2line
con 0x, se espera un número hexadecimal, y obtendrá un error
en la información del número de línea. Tenga cuidado de usar siempre direcciones
hexadecimales con addr2line.
// vim: set syntax=asciidoc: