Question

J'ai un exécutable et je le débogue en utilisant GDB. C'est la première fois que je utilise GDB, alors restez avec moi s'il vous plaît.

Je veux définir un point d'arrêt à une fonction et je connais le nom de la fonction à l'aide de la classe. Maintenant, cela ne me permet pas d'ajouter un point d'arrêt à cette fonction car il dit qu'il n'y a pas de table de symboles. J'ai essayé d'ajouter la table de symboles mais cela se plaint toujours qu'aucune table de symbole chargée.

Alors, est-ce que je peux définir un point d'arrêt à cette méthode? C'est une méthode objective C, pas C (si cela fait une différence). Tout ce que je dois faire est d'examiner l'argument de cette méthode.

Était-ce utile?

La solution

Dans la classe de classe, une option -a peut imprimer l'adresse de la fonction, par exemple

@interface FooObject : NSObject
{
}

- (void)y;  // IMP=0x100000d54

@end

Avec cela, vous pouvez définir un point de rupture en utilisant l'adresse:

(gdb) b *0x100000d54
Breakpoint 1 at 0x100000d54

Notez que, à moins que vous n'ayez dépouillé l'exécutable, vous devriez toujours être possible de définir un point de rupture en utilisant le nom de la méthode

(gdb) b -[FooObject y]
Breakpoint 2 at 0x100000d60

(L'adresse n'est pas la même chose que ce dernier saute un code de configuration de trame.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top