Отладка в dll с использованием как управляемого, так и неуправляемого кода завершается сбоем в VS 2005. Почему? - PullRequest
0 голосов
/ 02 декабря 2008

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

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

Проблема в том, что:

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

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

Ответы [ 6 ]

2 голосов
/ 12 декабря 2008

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

1 голос
/ 14 мая 2009

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

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

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

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

0 голосов
/ 21 июля 2010

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

0 голосов
/ 02 декабря 2008

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

0 голосов
/ 02 декабря 2008

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

0 голосов
/ 02 декабря 2008

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

...