J'ai un pointeur dans GDB, comment puis-je savoir où il a été alloué pour la première fois sur le tas?Dans GDB, comment savoir qui a placé une adresse sur le tas?
En WinDBG, cela peut être fait par !heap -p -a <0x12345678>
après la mise gflags /i <*exe> +ust
Depuis Valgrind peut me dire où la mémoire est allouée (lorsqu'il détecte des fuites), je suppose que cela est possible?
(Ce n'est pas sur point d'observation. Ceci est donné la situation dans laquelle je me casse au hasard dans le gdb, l'application, regardez un pointeur et que vous voulez savoir « qui a créé ce morceau de mémoire »?)
L'utilisation de débogage inverse dans GDB est un moyen très nouveau et probablement le corriger façon de résoudre ce problème. J'ai rencontré un problème avec cette approche avec GDB 7.1 - la dernière version stable. Le débogage inversé est une fonctionnalité plutôt nouvelle dans GDB, j'ai donc dû vérifier HEAD (7.2) pour le réparer.
Il est probablement dit quelque chose sur la maturité de l'approche GDB mais je pense qu'il devrait certainement être utilisé quand il est plus mature. (Fonctionnalité géniale!)
Merci! Votre approche et ks1322 semblent valables. Il est intéressant de connaître le débogage d'allocation mtrace et glib. D'un autre côté, je pense que l'approche de ks1332 est plus intelligente et probablement plus proche de GDB (donc le titre de la question). Je vais expérimenter avec les deux et voir lequel est le mieux en pratique avant de choisir une bonne réponse. – kizzx2