J'ai un vidage de cœur complet d'un processus mort sur une machine Linux x86 (noyau 2.6.35-22 si cela importe), que j'essaie de déboguer dans GDB.
Y a-t-il une commande GDB que je peux utiliser qui signifie "montrez-moi une liste de toutes les régions d'adresses mémoire allouées par ce processus?" En d'autres termes, puis-je savoir quelles sont toutes les adresses mémoire valides possibles que je peux examiner dans ce vidage?
La raison pour laquelle je demande est que j'ai besoin de rechercher dans toute la pile du processus une certaine chaîne binaire, et pour utiliser la commande find
, j'ai besoin d'avoir une adresse de début et de fin. La simple recherche de 0x00 à 0xff.. ne fonctionne pas car find
s'arrête dès qu'il rencontre une adresse à laquelle il ne peut pas accéder:
(gdb) find /w 0x10000000, 0xff000000, 0x12345678
avertissement : Impossible d'accéder à la mémoire cible à l'adresse 0x105ef883, arrêt de la recherche.
Je dois donc obtenir une liste de toutes les régions d'adresses lisibles en mémoire afin de pouvoir les rechercher une par une.
(La raison pour laquelle j'ai besoin de faire cela est que je dois trouver toutes les structures en mémoire qui pointent vers une certaine adresse.)
Aucune des commandes show mem
, show proc
, info mem
, info proc
ne semblent faire ce dont j'ai besoin.