Просмотреть наиболее производный тип в отладчике - PullRequest
7 голосов
/ 05 августа 2011

Я пишу проект на C ++ и создаю DAG различных типов, связанных с наследованием. Я установил точку останова после строительства, и я хотел бы просмотреть DAG. Однако отладчик покажет только базовый класс. Он будет называть самый производный тип рядом с записью __vfptr, но на самом деле я не могу просмотреть его содержимое и убедиться, что это именно то, что я от них ожидаю. Есть ли способ напрямую просмотреть наиболее производный тип в окне Locals?

Я нацеливаюсь на x64, если это актуально.

1 Ответ

2 голосов
/ 06 августа 2011

Единственный способ, который мне кажется подходящим, - сказать отладчику правильно показывать объекты с помощью autoexp.dat. Не уверен, как хорошо это будет работать в vs2010, я все еще использую 2008. Этот метод очень подходит для умных указателей. Если вы пытаетесь заглянуть внутрь необработанных указателей, то, я думаю, вам нужно вручную привести указатель в окно просмотра / быстрого просмотра. Если это какой-то smartpointer или класс, который хранит этот необработанный базовый указатель, то вы можете просто сделать это с помощью autoexp.dat таким образом (при условии, что ваш базовый ptr называется m_ptr):

smart_ptr<*>{
preview
(
    #if (($e.m_ptr)!=0)
    (
    #(
        "smart_ptr ",
        (*(($T1 *)$e.m_ptr))
    )
    )
    #else
    (
        #("<Bad Ptr>")
    )
)
children
(
    #(
        ptr: (*(($T1 *)$e.m_ptr))
    )
)

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...