Pregunta:
Ejecute el comando en el punto de interrupción sin detenerse
Attila O.
2014-01-03 10:45:57 UTC
view on stackexchange narkive permalink

Me gustaría automatizar lo siguiente en mi .gdbinit:

  break boost :: uuids :: detail :: sha1 :: process_bytes # Cuando se ejecuta se detiene en el punto de interrupción anterior, # Quiero mostrar el contenido de `rcx` como una cadena: x / s $ rcxc # no se detenga aquí  

¿Cómo automatizo esto?

ACTUALIZACIÓN: Aquí hay un mejor ejemplo de .gdbinit :

  # Nuestro libcurl personalizado, con símbolos de depuración habilitados: establecer entorno LD_PRELOAD =. / curl /curl-7.34.0/lib/.libs/libcurl.so# Archivo que se conecta al servidor maligno: file ./evil# ¡Asegúrate de recibir una notificación cuando se conecte! , CURLOPT_VERBOSE) continueend  

Esto se conecta al binario maligno, y cuando inicializa su manejador curl, lo configuramos en detallado para que obtengamos muchos resultados sobre lo que está sucediendo.

Gracias por la respuesta.

One responder:
0xC0000022L
2014-01-03 11:19:23 UTC
view on stackexchange narkive permalink

Bastante fácil. En su caso, lo que probablemente desee sean comandos que se pueden usar para crear "rutinas" que se ejecutan cada vez que se alcanza un punto de interrupción. Para su caso más o menos:

  break boost :: uuids :: detail :: sha1 :: process_bytescommands 1x / s $ rcxcontinueend  

El problema es que necesita para codificar el número de punto de interrupción. Dependiendo de la versión de GDB, puede solucionar esto usando la variable de conveniencia $ bpnum . Entonces:

  break boost :: uuids :: detail :: sha1 :: process_bytescommands $ bpnumx / s $ rcxcontinueend  

También vea este en relación con el último ejemplo.

Nota: el uso de este método puede ser bastante agotador para la CPU dependiendo de la frecuencia con la que se llame y si un punto de interrupción de hardware podría ser utilizado por GDB.


También puede utilizar la forma condicional de puntos de interrupción. Consulte la referencia autorizada real aquí. El formulario se ve así:

  break ... if cond  

También puede establecer la condición independientemente de establecer el punto de interrupción, si conoce el punto de interrupción número. Use info break para obtener el número del punto de interrupción y luego utilícelo como bnum en:

  condition bnum expression  


Esta pregunta y respuesta fue traducida automáticamente del idioma inglés.El contenido original está disponible en stackexchange, a quien agradecemos la licencia cc by-sa 3.0 bajo la que se distribuye.
Loading...