2015-08-30 1 views
0

Je voudrais lire un fichier core-dump exporté avec gcore.
Cependant, je voudrais lire un fichier coredump dans mon application C++, pas avec la commande gdb terminal.
Par exemple, j'ai un programme exécutable 'testEx' et il est tué pour une raison quelconque, alors 'testEx' a laissé un core dump.
Je suis en train de créer une application C++ 'readGDB' pour analyser la mémoire core créée par 'testEx'.
Toute bibliothèque C++ et un exemple pour lire un fichier core?En tout cas pour que mon application C++ communique avec GDB?

+0

Les fichiers de base sont simplement des fichiers exécutables (a.out ou ELF ou tout ce qui est sur Mac OS X). Donc, toute bibliothèque qui lit les formats exécutables fera l'affaire. –

+0

@ n.m. Si vous souhaitez exécuter la commande 'dump binary memory' avec gdb sur coredump, comment le feriez-vous en C++? –

+0

Je voudrais lire la mémoire avec libelf ou similaire, puis l'écrire dans un fichier. –

Répondre

0

Toute bibliothèque C++ et un exemple pour lire un fichier core?

La lecture du core est trivial: vous venez open et read il.

Ce qui n'est pas trivial, c'est de comprendre ce que le contenu signifie. Un fichier core est un fichier ELF, il a donc beaucoup de structure interne, et des bibliothèques telles que libelf peuvent vous aider à lire des sections spécifiques du core.

Mais c'est encore à long chemin loin de ce que GDB fait: pour vraiment comprendre le contenu, vous devez également mettre en œuvre la gestion des symboles, de déroulement pile, et bien d'autres choses. En bref, vous devrez ré-implémenter la moitié de GDB.

Alors pourquoi ne pas simplement utiliser GDB? Vous pouvez parler à GDB depuis votre application, et lui faire vous donner les réponses que vous cherchez. GDB a un machine interface mode spécial pour juste ce but.