gdb semble être dans un mauvais état après avoir essayé de franchir une ligne ou deux, après avoir atteint un point d'arrêt. Y a-t-il quelque chose de spécifique que je peux faire dans Eclipse pour résoudre ce problème?gdbserver ne marche pas correctement (bras cortex a9) dans Eclipse
Repro:
- Démarrer une session de débogage dans Eclipse, attaché à la cible à distance
- Définir un point d'arrêt dans Eclipse, puis le déclencher sur la cible.
- Le point d'arrêt est touché correctement dans Eclipse. Maintenant, «enjambe» une ligne ou deux.
Résultat attendu:
- 'étape sur' exécutera une ligne, que vous auriez normalement attendre.
Résultat réel:
- Au lieu d'aller au numéro suivant de la ligne, il semble que le programme « continue ». Dans la vue de débogage dans Eclipse, l'arborescence affichant tous les threads les minimise tous, et ils ne peuvent pas être développés pour afficher la pile en cours. De plus, les boutons "step ..." ne sont plus activés et les boutons "pause" et "stop" peuvent être activés. Cela implique que le programme est en cours d'exécution, ce qui n'est pas prévu, car nous avions précédemment pressé "step over". En regardant la cible, elle ne fonctionne pas, mais elle est toujours en pause.
- Si nous tapons 'pause' dans Eclipse, puis ouvrons le thread spécifique avec le point d'arrêt, nous pouvons voir le pointeur d'instruction est de retour à l'endroit correct que nous attendons qu'il se trouve après avoir appuyé sur 'step over' précédemment. Donc, à première vue, il semble que nous avons juste un hoquet dans notre flux de travail, et il suffit de cliquer sur 'pause' pour trouver notre fil de discussion précédent, quand le pas ne se comporte pas correctement. Mais bientôt les choses s'arrêtent de fonctionner ...
J'ai été capable de reproduire ce problème sans Eclipse, en utilisant simplement la ligne de commande gdb et le serveur distant gdbserver. Le même comportement se produit. Une solution de contournement potentielle hacky est - une fois que vous avez atteint votre point d'arrêt, 'set scheduler-locking on'. Après cela, vous pouvez passer au contenu de votre coeur. Mais, je ne comprends pas très bien ce que ça fait.
Quelqu'un a-t-il des commentaires?
Merci.