Как установить точку останова данных при смешанной (C # / C ++) отладке? - PullRequest
20 голосов
/ 28 октября 2008

Я запускаю свою программу на C #, который затем вызывает неуправляемый C ++.

Когда я разбиваю строку в неуправляемом C ++, пункт меню «Новая точка останова» становится серым.

Есть ли что-нибудь вокруг этого?

Ответы [ 4 ]

32 голосов
/ 28 октября 2008

Так что для этого мне пришлось:

  • установить неуправляемую dll в качестве запускаемого проекта
  • установить управляемую программу в качестве команды запуска
  • установить режим отладки как Native
  • «прервать выполнение» или достичь точки останова, чтобы перейти в состояние «отладки»

yech

16 голосов
/ 28 октября 2008

Чтобы установить точку останова данных в собственной части процесса смешанного режима, см. Ответ , опубликованный jyoung .

Visual Studio отключает точки останова данных при запуске чего-либо, кроме чистого, собственного кода. См. эту запись для частичного объяснения, почему от менеджера программ VS.

4 голосов
/ 08 мая 2013

Предлагаемое решение не работает постоянно. Даже при отладке в основном режиме, когда программа разбита на собственный фрагмент кода, при попытке установить «новую точку останова данных» я получаю всплывающее окно «Невозможно установить точку останова. Точки останова данных не поддерживаются в общеязыковая среда выполнения "

Альтернативой является добавление точек останова данных непосредственно из кода. Смотрите статью здесь .

Это хорошо работает в смешанном режиме, требуется только активный режим отладки (как предложено выше)

2 голосов
/ 10 января 2016

Очень полезный трюк, который работает везде, это вызывать точки останова из кода в особых условиях:

If (Condition)
    System.Diagnostics.Debugger.Break()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...