Смотреть содержимое вектора STL через GDB - PullRequest
2 голосов
/ 15 июля 2010

У меня есть вектор stl объектов пользовательских классов, определенных в глобальном пространстве имен (да, зло, я знаю). Теперь я хотел бы установить точку наблюдения в gdb для отслеживания возможных изменений (публичной) переменной-члена для определенного элемента этого вектора. Что-то вроде:

watch custom_namespace::vec[123].aVariable

Если я это сделаю, то gg (Sega версии 7.1 на Ubuntu Lucid) будет зависеть Есть ли альтернативные способы. Возможно ли это вообще?

1 Ответ

2 голосов
/ 15 июля 2010

Посмотрите, относится ли это к вашему делу (из руководство по gdb ):

Sometimes, gdb cannot set a hardware watchpoint because the data type of the watched expression is wider than what a hardware watchpoint on the target machine can handle. For example, some systems can only watch regions that are up to 4 bytes wide; on such systems you cannot set hardware watchpoints for an expression that yields a <b>double-precision floating-point number</b> (which is typically 8 bytes wide). As a work-around, it might be possible to break the large region into a series of smaller ones and watch them with separate watchpoints.


Попробуйте привести адрес к (int*). Это все еще segfault?

Также STL vector будет перемещать свое содержимое, если ему необходимо расширить внутренний буфер, поэтому ваш объект может быть просто «украден» из-под точки наблюдения.

...