Utilisation de C ++ avec Visual Studio, je me demandais s'il y a une API qui imprimera la CallStack pour moi. De préférence, j'aimerais imprimer une appelle 5 niveaux de profondeur. Windows fournit-il une API simple pour me permettre de le faire? P>
4 Réponses :
On dirait que la bibliothèque Dbghelp de Microsoft peut faire ce que vous voulez. Consultez la documentation de la fonction StackWalk64 sur MSDN pour plus d'informations. En outre, Cet article de codeProject peut être utile. P>
Regardez l'API StackWalk et StackWalk64 de l'API DBGHELP. P>
Il y a un certain nombre de façons de faire cela.
voir Comment enregistrer des cadres de pile avec Windows X64 p>
À mon avis, le moyen le plus simple et le plus fiable est la fonction API Win32: P>
USHORT WINAPI CaptureStackBackTrace( __in ULONG FramesToSkip, __in ULONG FramesToCapture, __out PVOID *BackTrace, __out_opt PULONG BackTraceHash );
Cela ne génère aucune information symbolique. Quelle utilisation est un tas de valeurs de pointeur?
Les programmes C / C ++ ne contiennent jamais d'informations symboliques par défaut. Voir ici pour façons d'ajouter des symboles à une pile dump: drdobbs.com/architecture-and-design/...