Расширение отладчика Visual Studio 2003 C ++ с использованием autoexp.dat и DLL - PullRequest
3 голосов
/ 29 июня 2009

Я знаю, что решением было бы использовать VS 2005 или 2008, но на данный момент это не вариант. Я должен написать расширение для отладчика VS 2003 C ++, чтобы улучшить способ отображения данных в окне просмотра. Основная причина, по которой я использую DLL, а не просто базовую функциональность autoexp.dat, заключается в том, что я хочу, чтобы все отображалось условно. То есть Я хочу иметь возможность сказать «Если имя члена не является пустой строкой, отображаемое имя, в противном случае отобразить [какой-то другой элемент]»

Я не могу найти много документации в Интернете, от MS или других людей, которые использовали (или пытались использовать) эту часть VS 2003. Образец MSDN EEaddin был хорошим началом, но очень простым и не очень помоги мне очень далеко

Пока что я только учусь, как отображать различные типы, не зная точно, над какими типами я буду работать в конце.

Мне удалось (через много проб и ошибок) заставить DLL отображать элементы указателя на элемент базового типа, строковые элементы, элементы указателя на определяемый пользователем тип и элементы auto_ptr . В настоящее время у меня возникают проблемы с отображением векторных элементов и элементов auto_ptr .

(Я нашел страницу, на которой написано, что auto_ptrs устарела, но мне нужно иметь возможность правильно отображать их, поскольку они используются в коде, для которого предназначено мое расширение.)

Мой вопрос: кто-нибудь делал такие вещи, и есть ли у вас какие-либо полезные документы по этому вопросу?

Спасибо!

[обновление:] Я выяснил, почему у меня проблемы с членами класса auto_ptr . Это из-за способа реализации строкового класса. Он имеет буфер char [16], в котором хранятся данные для коротких строк, и указатель char *, если строка длиннее (15 символов + символ завершения). Я не уверен, возможно ли и стоит ли пытаться взломать это, чтобы отобразить более длинные строки (я могу отобразить строки, достаточно короткие, чтобы их можно было сохранить в буфере char [16])

1 Ответ

7 голосов
/ 29 июня 2009

Эта статья может вам помочь:

http://msdn.microsoft.com/en-us/library/aa730838(VS.80).aspx

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