Как найти вызывающего метода при переходе через C # в Visual Studio 2008? - PullRequest
18 голосов
/ 06 августа 2009

Если я устанавливаю точку останова для метода, как я могу увидеть то, что вызвало метод, когда точка останова достигается в Visual Studio 2008?

Ответы [ 5 ]

37 голосов
/ 06 августа 2009

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

4 голосов
/ 06 августа 2009

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

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

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

3 голосов
/ 06 августа 2009

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

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

EDIT: Вы также можете щелкнуть правой кнопкой мыши имя функции и просмотреть «График вызывающих абонентов», который покажет вам всех вызывающих абонентов для вашего метода. В качестве альтернативы, вы можете вызвать Обозреватель вызовов (зайдя в Вид-> Другие окна-> Обозреватель вызовов) и выполнить поиск имени вашего метода.

1 голос
/ 06 августа 2009

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

1 голос
/ 06 августа 2009

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

  • Повторить
  • Рекомпилированные
  • Перезапуск
  • Переустановите:)
...