Как я могу найти вызывающую сторону метода при продвижении через C# в Visual Studio 2008?

Можно проверить на лицензию в DllMain () и умереть, если это не найдено.

20
задан Peter Mortensen 26 July 2012 в 18:42
поделиться

5 ответов

Проверьте окно стека вызовов (отладка, Windows, стек вызовов). Двойной щелчок по каждой записи приведет вас к оператору вызова. Вы также можете щелкнуть его правой кнопкой мыши, чтобы включить / отключить отображение элементов внешнего кода и вызовов из других потоков.

40
ответ дан 29 November 2019 в 23:20
поделиться

Если вы не видите ничего в стеке вызовов в установленной пользователем точке останова , это обычно означает, что он был вызван из собственного кода.

Другой случай, когда он не может получить стек: вы нажимаете Debug> Break All, и основной поток находится в состоянии ожидания / сна, отладчик может иметь проблемы при построении стека вызовов. Я считаю, что отладчик использует основной поток для своей неявной оценки функции.

Попробуйте подключить (или запустить) отладчик смешанного (собственного и управляемого) кода и посмотрите, исправит ли это ситуацию.

4
ответ дан 29 November 2019 в 23:20
поделиться

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

1
ответ дан 29 November 2019 в 23:20
поделиться

При достижении точки останова вы можете просмотреть весь стек вызовов. Вы можете открыть это окно, перейдя в меню «Отладка» -> «Окна» -> «Стек вызовов».

Вы также можете вызвать его с помощью сочетания клавиш Alt + Ctrl + C

РЕДАКТИРОВАТЬ: Вы также можете щелкнуть правой кнопкой мыши имя функции и просмотреть «График вызывающих абонентов», который покажет вам всех вызывающих абонентов для вашего метода. Кроме того, вы можете открыть Браузер вызовов (выбрав «Просмотр» -> «Другие окна» -> «Браузер вызовов») и выполнить поиск по имени вашего метода.

3
ответ дан 29 November 2019 в 23:20
поделиться

Если вы ничего не видите в окне стека вызовов, то определенно что-то не так. Я бы предложил знаменитую последовательность R-действий:

  • Повторить
  • Перекомпилировать
  • Перезагрузить
  • Переустановить :)
1
ответ дан 29 November 2019 в 23:20
поделиться