Pour une application de débogage C++, je souhaite pouvoir compter facilement le nombre de trames callstack. Existe-t-il une fonction OS pour cela?Comment puis-je compter le nombre de trames callstack?
J'ai besoin de cela pour Windows et Posix, c'est-à-dire multi-plateforme. Des solutions à l'une ou l'autre ou aux deux plateformes seraient excellentes.
Je peux marcher sur la pile pour trouver toutes les images mais je me demandais s'il y avait un appel facile à faire.
Dernièrement, ils ont simplement placé des "cookies" aléatoires sur le cadre de la pile que vous auriez à remplacer avant d'écraser l'adresse de retour. Ensuite, lors du retour de la fonction, le cookie est vérifié, et s'il a changé, l'application se termine. – Eclipse
Juste pour souligner, les cookies de pile de Microsoft, bien qu'intéressants ont déjà été vaincus, et ne devraient donc pas être invoqués pour la sécurité. Les cadres de pile ne sont en effet pas placés au hasard, car cela détruirait toute la pile. –
Je ne parlais pas des cookies. Je parlais du placement réel du cadre. Ce qui pourrait potentiellement être n'importe où dans la mémoire (avec un peu de câblage supplémentaire du compilateur). Une pile est simplement la méthode la plus simple pour enregistrer les informations dont elle n'a techniquement pas besoin pour être une pile. –