[GDB] ¿Cómo consultar "Examinar memoria" con tamaño dinámico?

Iniciado por BloodSharp, 11 Junio 2021, 01:25 AM

0 Miembros y 1 Visitante están viendo este tema.

BloodSharp

Buenas gente del foro, desde hace poco estoy aprendiendo a utilizar GDB y quisiera saber como se podría usar el comando examinar memoria sabiendo que fue previamente almacenado en una variable el tamaño del buffer...

Programa de ejemplo de para practicar:
Código (cpp) [Seleccionar]

#include <cstdio>
#include <cstdlib>
#include <ctime>
#include <cstdint>

int main(int argc, char**argv)
{
   char *pBuffer=0;
   int index=0,iUnknownSize=0;

   srand(time(NULL));

   do
   {
       iUnknownSize=rand()%20+1;
   }
   while(iUnknownSize<=0);

   pBuffer=(char*)malloc(iUnknownSize);
   if(pBuffer)
   {
       for(;index<iUnknownSize;index++)
           pBuffer[index]=(char)(rand()%254+1)&0xFF;
       printf("Comienza el procesado...\n");
       for(index=0;index<iUnknownSize;index++)
           printf("%X\n",(char)(pBuffer[index]&(uint64_t)0xFF));
       printf("Finaliza el procesado...\n");
       free(pBuffer);
   }
   printf("\n");
   return 0;
}


Al poner un breakpoint al primer printf que es lo que me interesaría puedo consultar la variable iUnknownSize y luego utilizarla con el comando x (examinar memoria)



Pero la idea sería final sería poner al breakpoint un comando automático que dumpee como lo siguiente:

x/(obtener valor de iUnknownSize)xb pBuffer

¿Mi pregunta sería hay alguna manera de especificarle depurador dicho valor al examinar?


B#