Как использовать отладчик VB6 на странице свойств Outlook OCX? - PullRequest
2 голосов
/ 19 июня 2009

Используя VB6, я создал плагин Outlook, который имеет страницу свойств. Страница свойств является элементом управления OCX.

Когда я компилирую проект в файл OCX, а затем запускаю OUTLOOK, все работает отлично: я могу видеть свой OCX как вкладку в опциях Outlook.

Однако, когда я пытаюсь отладить, запустив OCX в VB6, я получаю сообщение об ошибке. Моя отладка начинается так: 1) Отладочные параметры установлены на Ожидание создания компонентов " 2) Проект F5-RUN в VB6. 3) Запустите Outlook. 4) Получите ошибку: «Невозможно отобразить страницу« MyOcx ». Эта страница останется видимой, но недоступна. Произошла ошибка регистрации OLE. Программа установлена ​​неправильно. Запустите программу установки снова для программы»

Я подозреваю, что это связано с тем, что при отладке OCX создается вне процесса, а Outlook это не нравится.

Есть ли хороший метод для использования отладчика VB6 на OCX в этом сценарии?

Ответы [ 3 ]

3 голосов
/ 19 июня 2009

Отладчик VB6 иногда некорректен при отладке библиотек DLL или OCX.

  • Вы можете попробовать Windbg , бесплатный автономный отладчик от Microsoft. Скомпилируйте ваш VB6 OCX в собственный код без оптимизации и «создайте символическую отладочную информацию» (т.е. создайте файлы PDB), и вы сможете отлаживать свой OCX в процессе работы в Outlook. Вот сообщение 2006 в блоге от парня Microsoft об использовании Windbg с VB6 и сообщение в блоге 2004 года от другого парня из Microsoft с кратким введением в Windbg.
  • Вы также можете использовать отладчик Visual Studio 2008 с файлами VB6 и PDB, например, с Visual C ++ Express Edition (это бесплатно). РЕДАКТИРОВАТЬ см. Крис ответ для более подробной информации.
  • РЕДАКТИРОВАТЬ: и Windbg, и Visual Studio ожидают, что исходный код будет находиться на том же пути на отладочной машине, что и на машине сборки при сборке OCX. Самый простой способ - это собрать и отладить на одной машине. В противном случае вам может понадобиться fiddle с SUBST для создания виртуальных дисков - или мне сказали, что серьезным способом является использование Symbol Server .
  • (Серьезно) вы могли бы обойтись без этих новомодных интерактивных отладчиков, просто войти в файл или с помощью вызовов DebugMessage с вашего VB6 .
3 голосов
/ 20 июня 2009

Единственный способ, которым вы действительно сможете отладить это - In Process, как сказал MarkJ. Использование бесплатной Visual Studio 2008 C ++ Express Edition (или, что еще лучше, Visual Studio 2008 Professional, если она у вас есть, и она доступна для пробной версии 90 ) и PDB.

Чтобы убедиться, что вы создаете PDB, перейдите в Visual Basic, проверьте P) rojectties / P) *1008* и нажмите на тег Compile, Убедитесь, что «Создать символическую информацию отладки» отмечен.

Затем запустите Outlook и подключитесь к этому процессу из Visual Studio ( T) ools / Присоединить к процессу . Убедитесь, что ваш Ocx ​​отображается в окне модулей, а затем загрузите PDB (щелкните правой кнопкой мыши Ocx в окне модулей). Возможно, вам придется добавить исходный код в Свойства решения (для получения дополнительной информации о том, как это сделать, прочитайте этот пост ).

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

0 голосов
/ 19 июня 2009

Я не очень разбираюсь в OCX.

Однако вы можете использовать инструмент, входящий в состав Visual Studio, который называется что-то вроде «ActiveX Control Test Tool».

Насколько я знаю (исходя из моего понимания документации), OCX создается in-proc.

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