Le débogage des fichiers principaux des systèmes clients peut être difficile, en particulier lorsque le logiciel est compilé sans symboles de débogage. Pour résoudre ce problème, ce guide fournit des informations et des ressources pour une analyse efficace des fichiers principaux.
Lorsque les fichiers principaux sont générés à partir d'une distribution Linux différente de celle de l'environnement de développement, la trace de la pile n'a peut-être pas de sens. En effet, GDB localise les adresses de fonction dans la copie locale des bibliothèques partagées, qui peuvent différer de celles du système client. Pour obtenir une trace de pile précise, obtenez des copies des bibliothèques partagées du client et définissez le "solib-absolute-prefix" sur leur emplacement dans GDB en utilisant (gdb) set solib-absolute-prefix /path/to/libraries.
Pour le débogage avancé de Linux et Solaris, considérez ce qui suit livres :
Ces livres fournissent des scénarios de débogage réels, des techniques avancées et des conseils de débogage au niveau de l'assembleur.
Considérez ce qui suit exemple de crash :
Program terminated with signal 11, Segmentation fault. #0 0xffffe410 in __kernel_vsyscall () (gdb) where #0 0xffffe410 in __kernel_vsyscall () #1 0x00454ff1 in select () from /lib/libc.so.6 ... <omitted frames>
Pour une trace de pile significative, obtenez la bibliothèque libc.so.6 à partir du système client et définissez le chemin du préfixe dans GDB. Ensuite, émettez la commande (gdb) Where pour afficher la pile corrigée.
Au lieu de distribuer les binaires -g aux clients, envisagez l'approche suivante :
Cette méthode fournit des informations symboliques pour le débogage sans exposer les détails de la source ni expédier un déboguage séparé binaire.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!