2010-11-01 17 views
1

Lorsque je débogue mon programme en le parcourant, il faut parfois beaucoup de temps pour que l'étape se termine. Cela ne se produisait pas au début du projet, donc c'est probablement dû à quelque chose que j'ai ajouté. Pourriez-vous me donner des indications sur la façon de remédier à cela? J'ai remarqué que l'un des problèmes était dû au fil principal essayant de peindre un widget. Mon application est multi-thread (1 thread de fond et 1 thread principal) donc je me demande si cela a quelque chose à voir avec ça. Vos commentaires sont appréciés.La progression du programme avec le débogueur prend beaucoup de temps

Répondre

2

Avec gdb juste set scheduler-locking mode au comportement désiré.

Dans ce cas: « Le pas en mode optimise pour un seul pas à pas Il arrête d'autres fils de. « Saisir l'invite » par préempter le thread courant pendant que vous intensifions les autres threads que rarement (ou jamais) obtenir. une chance de courir quand vous marchez. "

+0

GRANDE RÉPONSE. THX –

2

A deviner: Votre "thread d'arrière-plan" est-il fixé à près de 100% d'utilisation du processeur?

Entre les lignes de votre thread principal, pendant le pas à pas, le débogueur va permettre au thread d'arrière-plan de "marcher". Si le thread d'arrière-plan est indexé, il peut fonctionner beaucoup plus que quelques instructions, ce qui fait que les choses semblent ne pas répondre. Il est probable que si votre second thread fait autant de calculs en continu, cela indique que vous avez un autre problème dans votre application que vous devez résoudre. Si vous maîtrisez ce thread, vous verrez probablement votre débogueur gérer les choses beaucoup mieux.

+0

mes programmes indiquent réellement 0% d'utilisation du processeur. Quand il dessine un widget, je suppose que c'est fait sur la carte vidéo directement. –

+0

ajout: J'ai vérifié l'utilisation du processeur lorsque le point d'arrêt prend du temps à retourner et j'ai trouvé que mon application n'a pas de problèmes theren mais gdb va jusqu'à 96% lorsque le point d'arrêt ne revient pas. (J'ai aussi une machine virtuelle fonctionnant sur mon système qui a la fonctionnalité de rendement activée dessus Je ne sais pas si cela pourrait avoir un effet) –

+0

Sur quelle plate-forme déboguez-vous? J'ai de la chance sur ma machine Windows, mais sur Mac c'est horrible. Avoir beaucoup de bélier semble aider. – jocull