Подтвердить что ты не робот

Как установить контрольную точку данных в смешанной (С#/С++) отладке?

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

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

В любом случае?

4b9b3361

Ответ 1

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

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

Ответ 2

Чтобы сделать это, мне пришлось:

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

yech

Ответ 3

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

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

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

Ответ 4

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

If (Condition)
    System.Diagnostics.Debugger.Break()