2017-09-02 4 views
0

Existe-t-il un moyen de step dans les fonctions standard comme printf() ou atof(), puis exécutez finish pour revenir au programme principal pour obtenir la valeur de retour?LLDB "étape dans" et "terminer" pour obtenir la valeur de retour des fonctions standard

Avec GDB je peux le faire comme ceci:

(gdb) step 
14   float di = atof(argv[1]); 
(gdb) step 
atof (nptr=0x7fffffffe0c6 "5.8") at atof.c:27 
27  atof.c: No such file or directory. 
(gdb) finish 
Run till exit from #0 atof (nptr=0x7fffffffe0c6 "5.8") at 
atof.c:27 
0x00005555555547d1 in main (argc=2, argv=0x7fffffffdd18) at 
circumf.c:14 
14   float di = atof(argv[1]); 
Value returned is $1 = 5.7999999999999998 

Mais quand j'essayer avec LLDB il pas « sur » toutes les fonctions standard. Il fonctionne avec les fonctions du programme, celles que je peux utiliser, mais pas avec les fonctions standard. Je suppose que c'est une fonctionnalité, mais y a-t-il un moyen de contourner le problème? J'utilise également step avec LLDB.

Existe-t-il un autre moyen d'obtenir la valeur de retour à partir de fonctions standard à l'intérieur de LLDB?

Répondre

0

Comme gdb, lldb va entrer dans n'importe quelle fonction pour laquelle vous avez des informations de débogage. Il passera sur toute fonction qui n'a pas d'informations de débogage. La différence de comportement que vous décrivez ressemble plus à lldb n'a pas/n'a pas trouvé d'informations de débogage pour vos solibs de bibliothèque standard.

+0

Merci, j'ai essayé GDB et LLDB sur la même machine, puis j'ai eu un comportement cohérent. Je sais que je n'ai eu un comportement différent entre LLDB et GDB que sur des machines différentes. Donc, vous avez raison, la différence était probablement le manque d'informations de débogage sur la machine sur laquelle j'ai couru LLDB. – jackbenny