Отладочная сессия зависает при попытке просмотра массива

Я использую Ubuntu 12.04. До сих пор я использовал anjuta и codelite в качестве IDE для школьных проектов C ++.
Однако с ними обоими я столкнулся с одной проблемой:
После запуска отладчика все работает нормально, пока я не попытаюсь добавить массив в секцию watches. Он ничего не отображает, и когда я пытаюсь продолжить отладку, он зависает, и мне нужно остановить сеанс отладки. Я должен отметить, что просмотр переменных работает хорошо.

Спасибо,

LE: На самом деле, функция отладки зависает только в случае больших массивов … тогда это может быть ошибкой codelite. Есть мнение?

2

Решение

Я должен отметить, что просмотр переменных работает хорошо.

Когда вы устанавливаете точку наблюдения для переменной, GDB, вероятно, говорит Hardware watchpoint N (но ваша IDE может скрывать это сообщение).

Когда вы устанавливаете контрольную точку для чего-либо большего, чем 8 байтов на процессоре x86, GDB не может установить аппаратную контрольную точку (потому что аппаратное обеспечение x86 не поддерживает такие контрольные точки). Вместо этого GDB устанавливает программную точку наблюдения. Программные точки наблюдения реализованы следующим образом:

  1. одношаговая программа
  2. изменились ли значения? Нет -> перейти к шагу 1. Да: остановить.

Программные точки наблюдения действительно медленный. Если вы смотрите свою систему с topвы, вероятно, обнаружите, что GDB потребляет 100% ЦП.

если ты действительно нужно смотреть весь массив, этот ответ показывает, как это можно сделать с помощью valgrind.

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector