2008-12-02 2 views
0

Я хочу отлаживать фрагмент кода, написанный на C++. Проблема в том, что dll смешана - в нем содержатся как C++, так и CLI (управляемый C++). Окружающая среда - VS 2005.Отладка в dll с управляемым/неуправляемым кодом не работает в VS 2005. Почему?

Моя точка входа - очень простой исполняемый проект, написанный на C++, который только запускает код в смешанной dll.

Проблема заключается в том, что:

  1. , если я позволю «Debug типа», как Авто для обоих проектов, мои контрольные точки не попали. (позже отредактируйте: это нормально, поскольку Auto основан на содержимом исполняемого проекта).

  2. Если я настроил его на «смешанный», точки останова будут удалены, но неуправляемые часы будут пустыми. Например, я не вижу значения std :: string. Однако я могу видеть базовые типы, такие как int и bool.

ответ

1

Я могу отлаживать в смешанном режиме в VS2005, задав тип отладчика смешанным в свойствах проекта (на вкладке «Отладка»). Иногда такие вещи исчезают после хорошей перезагрузки и чистой перестройки.

Если это не сработает, попробуйте подключиться к приложению после его запуска (Debug | Attach to Process). Вы можете выбрать режим отладки, нажав кнопку «Выбрать» в середине рядом с разделом «Прикрепить к:».

У вас есть все обновления от Microsoft? Там может быть один, который решает вашу проблему.

В целом, отладка смешанного режима, похоже, работает намного лучше в VS2008. Я рекомендую обновить, если можно. Существует бесплатная версия, но я думаю, что она ограничена в некотором роде.

0

Вы уверены, что активировали все параметры отладки? Я видел это, когда «забыл» некоторые при попытке навигации по лабиринту опций C++.

+0

Я не могу вспомнить, что их так много, чтобы увеличить максимальные уровни. И компилятор, и компоновщик. – leppie 2008-12-02 14:42:03

0

У меня нет моей среды 2005/2008 передо мной, однако я, похоже, помню, что есть опция, которая должна быть включена в настройках проекта (я считаю, вкладка отладки), чтобы выполнить неуправляемую отладку , Как только это будет включено, у вас не должно быть никаких проблем.

0

Вам нужно сообщить Visual Studio, чтобы отлаживать больше, чем только ваш управляемый код. Перейдите в раздел Инструменты | Параметры, выберите Отладка | Генеральная. Снимите флажок рядом с надписью «Включить только мой код (только управляемый)».

2

Также попробуйте настроить ваш отладчик на Mixed. Это позволит отлаживать как управляемый, так и неуправляемый код.

0

Совет LanceSc действительно помогает.
Перейти к Инструменты | Параметры, выберите Отладка | Генеральная.
Снимите флажок рядом с надписью «Включить только мой код (только для управляемых)»
Это решает проблему в VS2008.

Смежные вопросы