Отладка LLDB С++
Я новичок в LLDB, и я работаю с различными std::vector
в моем коде, однако, когда я пытаюсь напечатать значения вектора или запросить размер моего вектора с чем-то вроде expr '(int)myVector[0]'
или expr '(int)myVector.size()'
отладчик печатает значения, которые не имеют ничего общего со значениями, которые я знаю, есть в векторе.
Как я учусь отлаживать с командной строкой и LLDB, я уверен, что здесь что-то не хватает, может кто-нибудь заметить мою ошибку или дать совет?
EDIT Забыл сказать, что я под OS X Mavericks с установленными последними инструментами командной строки.
Ответы
Ответ 1
Я сам нашел ответ. По-видимому, перегруженные операторы, такие как []
, не разрешены, так как они встроены, см. Этот вопрос для лучшего объяснения этого.
Кроме того, я не знаю, почему я поместил одинарные кавычки для выражения, которое я хотел оценить (я уверен, что видел его в другом месте... что они на самом деле означают в LLDB?), как будто expr 'printf("Hey")'
Итак, вынимая кавычки и используя ответ в указанном вопросе, достаточно чего-то вроде
expr (int) myVector.__begin_[0]
чтобы получить одиночное значение позиции в векторе.
Ответ 2
Используйте p myVector
или po myVector
. Они будут распечатывать содержимое вашего вектора (рядом с размером) в нескольких разных форматах.
Чтобы напечатать одно значение из вектора, вы можете использовать что-то вроде p (int)myVector[0]
.