Estoy tratando de leer la pila de un proceso secundario pero sin suerte. Sé que es posible usarlo ptrace
, pero ptrace
la interfaz le permite leer solo una palabra a la vez, y estoy tratando de escanear porciones más grandes de la pila.
También intenté leer los /proc/$pid/mem
límites de la pila extraídos del /proc/$pid/maps
archivo después de usar ptrace para adjuntarlo (como se sugiere aquí ), pero la lectura sigue fallando (incluso cuando se ejecuta como root) aunque el mismo código tiene éxito cuando se intenta lectura de diferentes partes del proceso (por ejemplo, montón).
¿Qué estoy haciendo mal? ¿Hay alguna otra opción?
waitpid
entreptrace(PTRACE_ATTACH,…)
yread
(de lo contrario, hay una posible condición de carrera)? ¿Qué errorread
devuelve? ¿El niño está haciendo algo peculiar con su mapeo de memoria? ¿Puede probar su código con un niño simple comosleep
?