Usando C++ con Visual Studio, me preguntaba si hay una API que imprima la pila de llamadas para mí. Preferiblemente, me gustaría imprimir una callstack de 5 niveles de profundidad. ¿Windows proporciona una API simple que me permita hacer esto?¿Imprime n niveles de callstack?
10
A
Respuesta
5
Hay varias formas de hacerlo.
Ver How to Log Stack Frames with Windows x64
En mi opinión, el más simple y así la forma más fiable es la función de la API de Win32:
USHORT WINAPI CaptureStackBackTrace(
__in ULONG FramesToSkip,
__in ULONG FramesToCapture,
__out PVOID *BackTrace,
__out_opt PULONG BackTraceHash
);
Este parámetro FramesToCapture, determina la profundidad máxima de pila de llamadas devueltas.
8
Parece que la biblioteca DbgHelp de Microsoft puede hacer lo que quiera. Consulte la documentación de la función StackWalk64 en MSDN para obtener más información. Además, this CodeProject article puede ser útil.
0
Tener un vistazo a la API Stackwalk y StackWalk64 de la API DbgHelp.
1
creo que usted puede conseguir que fuera de su API depurador (dbghelp).
Cuestiones relacionadas
- 1. aplicaciones de polimorfismo y n niveles
- 2. Herramienta PHP Callstack
- 3. callstack? retainstack? nombre de pila?
- 4. Muestra de aplicación web de N niveles con Ninject?
- 5. Ejemplo de arquitectura de 4 niveles (para N-Tier)?
- 6. Recomiende .NET ORM para desarrollo de N niveles
- 7. haciendo eco en shell -n no se imprime correctamente
- 8. ¿Cuál es la diferencia entre desarrollar un sitio web en MVC y arquitectura de 3 niveles o N niveles?
- 9. Canvas.drawText (...) no imprime linebreak
- 10. ¿Explicar los diferentes niveles de la arquitectura de 2 niveles y 3 niveles?
- 11. ¿Dónde encaja la API web en una arquitectura típica de n niveles?
- 12. Mejores prácticas para repositorios Git con múltiples proyectos en el diseño tradicional de n niveles
- 13. ¿Hay un selector/método de jQuery para encontrar un elemento principal específico n niveles arriba?
- 14. Si char c = 0x80, ¿por qué imprime printf ("% d \ n", c << 1) output -256?
- 15. ¿Cuándo no se imprime printf?
- 16. Android niveles de registro
- 17. ¿Cuántos niveles de herencia
- 18. echo "-e" no imprime nada
- 19. escribe o imprime, ¿qué es más rápido?
- 20. Imprime los valores de publicación
- 21. ¿Imprime OSGI bundle classpath?
- 22. JUnitCore.runClasses no imprime nada
- 23. DBMS_OUTPUT.PUT_LINE no imprime
- 24. ¿A dónde imprime printk()?
- 25. ¿Cuál es la prueba de (N-1) + (N-2) + (N-3) + ... + 1 = N * (N-1)/2
- 26. ¿Es log (n!) = Θ (n · log (n))?
- 27. Nlog y personalizados Niveles
- 28. ¿WordNet tiene "niveles"? (PNL)
- 29. Niveles Log4Net Valores numéricos
- 30. Log4net crear niveles personalizados
Esto no genera ninguna información simbólica. ¿De qué sirve un montón de valores de puntero? –
C/C++ Los programas nunca contienen información simbólica por defecto. Consulte aquí las formas de agregar símbolos a un volcado de pila: http://www.drdobbs.com/architecture-and-design/post-mortem-debugging-revisited/227900186 –