Estou tentando ler a pilha de um processo filho, mas sem sorte. Eu sei que é possível usar ptrace
, mas ptrace
a interface permite que você leia apenas uma palavra de cada vez, e estou tentando digitalizar partes maiores da pilha.
Também tentei ler os /proc/$pid/mem
limites da pilha como extraídos do /proc/$pid/maps
arquivo depois de usar o ptrace para anexar a ele (como sugerido aqui ), mas a leitura continua falhando (mesmo quando executado como root), embora o mesmo código tenha êxito ao ser tentado leitura de diferentes partes do processo (por exemplo, heap).
O que estou fazendo de errado? Existe alguma outra opção?
waitpid
entreptrace(PTRACE_ATTACH,…)
eread
(caso contrário, há uma possível condição de corrida)? Que erroread
retorna? A criança está fazendo algo peculiar com seu mapeamento de memória - você pode tentar seu código com uma criança simples comosleep
?