2012-06-26 6 views
1

Я пытаюсь использовать функцию push_back для вектора в C++. Я получаю ошибку seg, и когда я запускал gdb, чтобы найти точную причину.Понимание вывода gdb

Получаю следующее.

$1={px = 0xbfffe9c4, pn = { pi_ = 0x8049c0b}} 

У меня нет большого опыта работы с gdb и я не могу найти что-либо, связанное с этой конкретной проблемой в Интернете.

+3

Вы получаете это, когда делаете то, что конкретно? –

+0

Возможный дубликат [Как получить значение элемента данных в gdb?] (Http://stackoverflow.com/questions/10814170/how-to-get-value-of-a-data-member-in-gdb) –

ответ

2

Мой волшебный шар говорит мне, что вы рухнули, разыгрывая shared_ptr. Следуйте члену px, так как это фактическое значение указателя, представляющее для вас интерес. Например, вы можете попробовать:

print $1.px 

и если указатель указывает на допустимый область памяти:

print *$1.px 

gdb отладчик предоставит вам много информации, но некоторые из более полезным вещи: backtrace, up, down, info locals, и если вы многопоточно, thread apply all backtrace. Если вы отлаживаетесь вживую, то, конечно, вам понадобятся breakpoint, next, step и continue. Вы можете использовать gdb для получения дополнительной информации, а gdb manual можно легко найти в Интернете.