Как отлаживать C # без точек останова в Visual Studio? - PullRequest
6 голосов
/ 08 декабря 2010

У меня проблемы с тем, чтобы найти утверждение, которое вызывает данный побочный эффект. Я ставлю точку останова в каждом члене класса и все еще не могу сделать паузу выполнения в строке виновника.

  • Есть ли опция отладчика, которая заставляет выполнение приостанавливаться на каждой строке независимо от точек останова?

или

  • Как сделать каждую строку точкой останова без необходимости отмечать их вручную?

Ответы [ 6 ]

5 голосов
/ 08 декабря 2010

Вы можете приостановить выполнение, а затем начать трассировку построчно (например, нажав F10). Это даст вам точно такой же эффект разрыва на каждой строке.

Редактировать : вам не нужно ставить точку останова в каждом методе, если вы используете «trace into» (нажимая F11 в настройках по умолчанию). Затем отладчик остановится в первой строке вызываемого метода.

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

Редактировать 2 : Я не думаю, что вы найдете побочный эффект, который вы описали, через точку останова. Проверка подписанного кода выполняется CLR при загрузке подписанной сборки. Он должен получить доступ к сети для обновления списков отзыва.

Чтобы обойти эту проблему, вы можете отключить проверку CRL. Вот некоторая информация о том, как это сделать: http://technet.microsoft.com/en-us/library/cc738754(WS.10).aspx

Конечно, вы должны знать о последствиях для безопасности (что если сертификат для кода, который вы запускаете действительно был отозван?)

3 голосов
/ 08 декабря 2010

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

1 голос
/ 03 февраля 2015

Самый простой способ - использовать встроенную функцию Break All в отладчике. Это не относится к каждой ситуации, но если это относится к вашей, то это очень просто в использовании. Отладка >> Break All (или CTRL + ALT + Break )

См. Раздел «Взлом кода с использованием точек останова или Break All» на этой странице для получения дополнительной информации: Запуск, разрыв, шаг, выполнение кода и остановка отладки в Visual Studio

1 голос
/ 08 декабря 2010

Это довольно просто, но только если вы знаете, что происходит.Вот что нужно сделать.

  1. В Visual Studio с вашим проектом откройте удерживая ctrl-alt-E , чтобы загрузить диалоговое окно «Исключения».Это дает вам варианты, когда сломаться.Вы выберете столбец «Исключения общеязыкового языка».
  2. Теперь запустите ваше приложение.Теперь любые сгенерированные исключения CLR приведут вас к строке кода, которая прервалась.

Не забудьте ctrl-alt-E и снимите флажок, когда вы закончите!1013 *

0 голосов
/ 08 декабря 2010

Я не уверен, что понимаю вашу проблему.Вы можете использовать одну точку останова, а затем нажать F10 (шаг) или F11 (шаг), чтобы перейти к следующей инструкции.Это было бы то же самое, что иметь точку останова на каждой строке и нажимать F5 (продолжить) после каждого перерыва.Или вы можете установить точку останова на линии преступника и исследовать окно стека вызовов, чтобы увидеть поток управления до этой точки.

0 голосов
/ 08 декабря 2010

Вы можете попробовать перешагнуть код с помощью F10, пока не столкнетесь с проблемой, результат будет тот же.

...