É possível monitorar cada memória de célula para um processo específico

1

Dizendo que eu tenho um programa em C muito simples test.c , que apenas imprime "hello world", seu nome é a.out vindo de gcc test.c .

Estou pensando se é possível monitorar exatamente o que aconteceu durante a execução do a.out . Por exemplo, eu quero saber exatamente quantos bytes são usados para a.out , o que está acontecendo em cada memória de célula (8 bits) usada por a.out etc.

Bem, eu só quero um material como este:
neste momento, a memória do endereço 0X00001234 está armazenando 00001001; no momento seguinte, a memória do endereço 0X00001236 está colocando seu valor em cache ...

Parece que o uso do GDB é executado passo a passo. Mas para mim, tenho apenas um binário executável. Eu preciso de uma maneira de testá-lo, em vez de depurar.

    
por Yves 25.01.2018 / 14:39

1 resposta

0

Você pode compilar o programa com informações de depuração incluídas usando a opção -g . gdb seguirá então o código-fonte e, quando executado passo-a-passo, exibirá as linhas apropriadas do código-fonte, se os arquivos .c correspondentes estiverem presentes.

A interface gdb também permitirá que você inspecione a posição de memória correspondente das variáveis presentes no código-fonte.

Eu também não usaria test para um nome binário, pois está em conflito com diretivas pré-existentes.

gcc -g mytest.c -o mytest 

-g tells the compiler to store symbol table information in the executable. Among other things, this includes:

  • symbol names
  • type info for symbols
  • files and line numbers where the symbols came from

veja Como a opção de depuração -g muda o executável binário?

veja também minha resposta relacionada Entendendo o que é um binário do Linux fazendo

    
por 25.01.2018 / 14:52