J'ai un programme écrit en C ++, sur Linux, compilé avec -g.
Lorsque je l'exécute sous GDB, je peux p> maintenant, étant donné que Mon programme est compilé avec "-g" - existe-t-il de toute façon que je puisse accéder à cette puissance dans mon programme lui-même? p> IE Étant donné que mon programme est compilé avec "-g", y a-t-il une fonction p> que je peux appeler pour obtenir le programme de cheminement actuel au point d'exécution actuel? P> donné un pointeur à un objet et c'est de type ... puis-je faire p> std :: vecteur getclassmember (class_name); p> ? p> Je réalise que la réponse par défaut est "Non, C ++ ne prend pas en charge ce niveau d'introspection" - cependant, je rappelle que je suis sur Linux, mon programme est compilé avec "-g", et GDB peut le faire, donc clairement que l'inféromention est là. La question est: y a-t-il des API d'y accéder? P> EDIT: PS NYYSERS, j'aimerais voir une raison de la fermeture de cette question. P> p>
3 Réponses :
Je me souviens d'utiliser libbfd pour obtenir des noms de fonction des fichiers d'objet. C'est une bibliothèque de formats d'objet de lecture, vous pouvez peut-être également lire d'autres informations de débogage à l'aide de cela. (Je ne sais pas être honnête) p>
Le format de débogage est appelé nain. Cela devrait vous indiquer où chercher plus loin. P>
Bibliothèque Pour lire les informations de débogage du nain Elf < / p>
Cela a toujours été l'objectif de libcwd, mais en raison d'un manque d'intérêt de la communauté, je n'ai jamais eu plus loin que la lecture des informations de numéro de ligne de source source de la section .debug_line de NAREF. P>
Pourquoi quelqu'un voudrait-il fermer une question parfaitement valable?