An earlier question объяснил, что размер объекта, просматриваемого на x86, ограничен регистрами отладки. Как и ожидалось, я могу «наблюдать» двойную переменную. Но я не могу смотреть двойной DataMember, например,Настройка точки наблюдения аппаратного обеспечения GDB/как установить контрольную точку программного обеспечения
watch pObject->dPrice
производит
Hardware watchpoint 1: pObject->dPrice
Но при попытке продолжить выполнение, он говорит
Не удалось вставить аппаратные точки останова: Возможно, вы запросили слишком много аппаратных контрольных точек/точек наблюдения.
, хотя это только точка останова/точка наблюдения.
Мне любопытно, почему это так, но что еще более важно, есть ли способ вокруг него? Согласно документации GDB, он может использовать точки наблюдения программного обеспечения, если он не может использовать аппаратное обеспечение. В этом случае он не пытается использовать контрольную точку программного обеспечения - есть ли способ заставить это сделать это?
Вы можете напечатать адрес этой переменной-члена? Мое подозрение было бы оптимизировано в регистр. Если это не так, правильно ли оно выровнено? –