¿Puedo especificar que quiero que gdb se rompa en la línea x cuando char* xapunta a una cadena cuyo valor es igual "hello"? Si es así, ¿cómo?
c
debugging
gdb
conditional-breakpoint
341008
fuente
fuente

strncmpystrstrson otras funciones útiles de consulta en C.Respuestas:
Puedes usar
strcmp:20es el número de línea,xpuede ser cualquier nombre de archivo yycualquier variable.fuente
No symbol "strcmp" in current context.runpara que las bibliotecas dinámicas se carguen. Para la fuente, búscalo en google y encuentra: stackoverflow.com/questions/10000335/… :-)$_streqEl método de @tlwhitec es mejor.En algunas implementaciones, es posible que gdb no conozca el tipo de retorno de strcmp. Eso significa que tendrías que lanzar, de lo contrario, siempre se evaluaría como verdadero.
fuente
Desde GDB 7.5 puede usar estas funciones de conveniencia nativas :
Parece bastante menos problemático que tener que ejecutar un "extraño"
strcmp()en la pila del proceso cada vez que se alcanza el punto de interrupción. Esto es especialmente cierto para la depuración de procesos multiproceso.Para su caso de demostración, el uso sería
o, si su punto de interrupción ya existe y solo desea agregarle la condición
$_streqsolo coincide con la cadena completa, por lo que si desea algo más astuto debe usarlo$_regex, que admite la sintaxis de expresión regular de Python .fuente