Quiero establecer una condición en un punto de interrupción gdb para que solo se rompa si aparece un nombre de función determinado en la traza inversa. ¿Cuál es la mejor manera de hacer esto?GDB Descanso si el marco está en traza inversa
Respuesta
No estoy seguro de cómo hacer exactamente lo que pide, pero una solución posible, si tiene acceso al código fuente de la función relevante, es establecer alguna variable booleana global en true
al comienzo de la función y configúrelo en false
justo antes de que la función finalice. Entonces puede establecer un punto de interrupción condicional (utilizando el comando condition
) para detener solo cuando esta variable booleana es true
.
Eso es lo que terminé haciendo pero me gustaría saber cómo para hacerlo sin recompilar – Chazz
Una solución más simple que la creación de scripts de Python es usar temporary breakpoint.
Parece que este:
b ParentFunction
command 1
tb FunctionImInterestedIn
c
end
Cada vez que se rompe en ParentFunction
, deberá definir un punto de interrupción de una sola vez de la función que está realmente interesado en, a continuación, seguir ejecutando (presumiblemente hasta llegar ese punto de interrupción).
Puesto que usted va a romper exactamente una vez en FunctionImInterestedIn
, esto no funcionará si FunctionImInterestedIn
se llama varias veces en el contexto de ParentFunction
y que desea romper en cada invocación.
alternativa a la respuesta de rix0rrr:
b main
commands
set $inParentFunction = 0
c
end
b ParentFunction
commands
set $inParentFunction = 1
c
end
b FunctionImInterestedIn if ($inParentFunction)
- 1. Solo los signos de interrogación en traza inversa informados por gdb en ARM
- 2. ¿Qué significa el mensaje de traza inversa de GDB "0x0000000000000000 in ??()"?
- 3. Automatizar gdb: mostrar traza inversa en cada llamada a la función pone
- 4. Obteniendo la traza inversa del bloque catch
- 5. ¿Alguien probó la depuración inversa en gdb?
- 6. Convierta una traza inversa libc a un número de línea fuente
- 7. Cómo mostrar una traza inversa para un Error arrojado en Haskell
- 8. ¿Cómo puedo examinar el marco de pila con GDB?
- 9. ¿Cómo forzar a Google Chrome a mostrar la traza inversa en la excepción?
- 10. ¿Cómo puedo obtener la traza inversa completa en SpiderMonkey (JSAPI) desde mi función reportError?
- 11. ¿Cómo puedo acortar la traza inversa para una falla de prueba en RSpec 2?
- 12. ¿Cómo poner un descanso en una instrucción especificada por dirección en gdb?
- 13. Carpincho: traza de excepción en el registro
- 14. DESCANSO en IIS
- 15. traza entendimiento *
- 16. Descanso de GDB en la llamada a la función de objeto
- 17. Comprueba si el atributo CoreData está vacío
- 18. Cómo interpretar direcciones backtrace para la depuración con GDB
- 19. depuración vs traza en C#
- 20. ¿El marco de rayas está muerto? ¿Alguien lo está usando?
- 21. Traza un estancamiento en Ruby
- 22. Flex Framework - ¿Cómo saber si el usuario está usando un marco en caché?
- 23. El archivo de traza WCF sigue corrompiéndose?
- 24. ¿Está incluido asp.net MVC2 en el marco de .NET 4.0?
- 25. gdb interpretar la dirección de memoria como un objeto
- 26. ¿Está <value optimised out> en gdb un problema?
- 27. ¿Cómo funciona la depuración inversa?
- 28. ¿Cómo detengo la continuación en GDB
- 29. Cadena inversa en Python
- 30. ASP.NET MVC y el descanso de URI
duplicado posible de [? ¿Hay alguna manera de establecer un punto de interrupción en el BGF que está condicionada a la pila de llamadas] (http://stackoverflow.com/questions/5336403/is-there-any-way-to-set-a-breakpoint-in-gdb-that-is-conditional-on-the-call-stac) –