Подтвердить что ты не робот

Отладка LLDB С++

Я новичок в LLDB, и я работаю с различными std::vector в моем коде, однако, когда я пытаюсь напечатать значения вектора или запросить размер моего вектора с чем-то вроде expr '(int)myVector[0]' или expr '(int)myVector.size()' отладчик печатает значения, которые не имеют ничего общего со значениями, которые я знаю, есть в векторе.

Как я учусь отлаживать с командной строкой и LLDB, я уверен, что здесь что-то не хватает, может кто-нибудь заметить мою ошибку или дать совет?

EDIT Забыл сказать, что я под OS X Mavericks с установленными последними инструментами командной строки.

4b9b3361

Ответ 1

Я сам нашел ответ. По-видимому, перегруженные операторы, такие как [], не разрешены, так как они встроены, см. Этот вопрос для лучшего объяснения этого.

Кроме того, я не знаю, почему я поместил одинарные кавычки для выражения, которое я хотел оценить (я уверен, что видел его в другом месте... что они на самом деле означают в LLDB?), как будто expr 'printf("Hey")'

Итак, вынимая кавычки и используя ответ в указанном вопросе, достаточно чего-то вроде

expr (int) myVector.__begin_[0]

чтобы получить одиночное значение позиции в векторе.

Ответ 2

Используйте p myVector или po myVector. Они будут распечатывать содержимое вашего вектора (рядом с размером) в нескольких разных форматах.

Чтобы напечатать одно значение из вектора, вы можете использовать что-то вроде p (int)myVector[0].