пошаговое выполнение программы с отладчиком занимает много времени - PullRequest
1 голос
/ 01 ноября 2010

Когда я отлаживаю свою программу, проходя через нее, иногда для завершения шага требуется много времени.Этого не происходило в начале проекта, поэтому, скорее всего, это связано с тем, что я добавил.Не могли бы вы дать мне советы о том, как это исправить.Я заметил, что одна из проблем была связана с тем, что основной поток пытался нарисовать виджет.Мое приложение является многопоточным (1 фоновый поток и 1 основной поток), поэтому мне интересно, имеет ли оно какое-либо отношение к этому.Ваши комментарии приветствуются.

Ответы [ 3 ]

2 голосов
/ 01 ноября 2010

Предположение: ваша «фоновая нить» привязана к почти 100% загрузке ЦП?

Между строками вашего основного потока во время пошагового выполнения отладчик позволяет фоновому потоку также «шагать».Если фоновый поток размечен, он может выполнять намного больше, чем несколько инструкций, что приводит к тому, что что-то кажется неотзывчивым.

Возможно, если ваш второй поток выполняет столько вычислений постоянно, это указывает на то, что у вас есть другая проблемаваше приложение, которое вам нужно исправить.Если вы возьмете этот поток под контроль, вы, вероятно, увидите, что ваш отладчик гораздо лучше справляется с этим.

2 голосов
/ 02 ноября 2010

С GDB просто set scheduler-locking mode до желаемого поведения.

В этом случае: «Режим step оптимизируется для пошагового перехода. Он останавливает другие потоки от« захвата приглашения », прерывая текущий поток во время выполнения шага. Другие потоки будут работать редко (или никогда) получи шанс бежать, когда шагнешь. "

1 голос
/ 01 ноября 2010

Я задал очень похожий вопрос относительно visual studio: Отладчик VS2010 занимает неоправданно много времени

Реального ответа не последовало. Подобные вопросы вы также найдете и в прошлых версиях IDE.

...