Это немного глупо, но:
При просмотре предыдущего состояния в окне стека вызовов откройте окно разборки (Debug | Windows | Disassembly или CTRL + ALT + D). Теперь вы сможете создать точку останова, которая остановит выполнение, когда вы вернетесь в это место.
Если вам все равно, что еще выполняется, нажмите клавишу F5 и разрешите коду вернуться к новой точке останова.
Теперь щелкните правой кнопкой мыши оператор, с которого вы хотите перезапустить, и выберите «Установить следующий оператор». Нажмите F5, чтобы перезапустить оттуда.
Если вы заботитесь о том, что еще выполняется на пути к новой точке останова, вы можете использовать Set Next Statement, чтобы установить программный счетчик на конец функции, в которой вы находитесь, и использовать Shift + F11, чтобы выйти из этой функции. (таким образом, не выполняет какую-либо оставшуюся логику в этой функции). Повторяйте по мере необходимости, пока не вернетесь к новой точке останова.
Обратите внимание на различные мрачные предупреждения об использовании оператора Set Next
Редактировать 6/18 Когда я проверял вышеизложенное, я использовал Visual Studio 2010 Ultimate. Я только что проверил Visual Studio Express C #, и он не поддерживает окно отладки дизассемблирования. Когда я смогу, я проверю Visual Studio 2010 Professional и обновлю этот ответ снова. Если у вас установлена Visual Studio Ultimate, то предложение @Hans от Intellitrace, возможно, будет лучшим выбором.