Исключить определенные проекты из пошагового выполнения во время отладки в VS2010?

Я работаю над парой проектов (A и B) в большом решении VS2010 (все на С#). Во многих случаях методы из проекта A вызывают один или несколько проектов в решении, за которые я не несу ответственности, которые, в свою очередь, вызывают проект B. При пошаговом выполнении с помощью отладчика из проекта A я вынужден чтобы пройти через множество методов в этих других проектах, в которых я не заинтересован, прежде чем я, наконец, доберусь до вызова проекта B. Кроме того, при выходе из проекта B я должен пройти весь путь назад через стек вызовов неинтересных методов, прежде чем я вернусь к проекту А.

В настоящее время я работаю над этим, устанавливая точки останова в точках входа и выхода в проектах A и B, но я обнаружил, что много времени тратится на установку этих точек останова в правильных местах, и я чувствую, что моя жизнь была бы много проще, если бы я мог просто отключить пошаговое выполнение для определенных проектов.

Я знаю об атрибуте DebuggerStepThroughAttribute, но его использование в моей ситуации неприемлемо, так как (i) мне пришлось бы добавлять его во многих местах и ​​(ii) ребята в моем офисе, которые заинтересованы в пошаговом выполнении этого кода, будут недовольны .

Любые идеи?


person Mike Chamberlain    schedule 07.10.2010    source источник


Ответы (1)


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

Чтобы включить «Только мой код»:

  • Отладка » Параметры и настройки... » Общие » установите флажок «Включить только мой код (только управляемый)».

Чтобы предотвратить загрузку символов для DLL:

  • Отладка »Параметры и настройки... »Символы» нажмите «Все модули, если не исключены»
  • Нажмите «Указать исключенные модули».
  • Добавьте имена модулей, которые вы хотите исключить. Их символы не будут загружены при отладке приложения.

Теперь, когда вы выполняете шаг F11 из проекта A в проект B, который проходит через проект C, пока у вас не загружены символы для C, шаг войдет прямо в B.

Чтобы убедиться, что символы для C не загружены:

  • Начать отладку
  • Добраться до точки, где загружается C
  • Откройте окно «Модули» (Ctrl+Alt+U), прокрутите до записи для C
  • В столбце «Статус символа» должно быть указано «Загрузка отключена настройкой включения/исключения».
person Chris Schmich    schedule 07.10.2010
comment
Это помогло нам решить проблему, когда ни одна из наших точек останова не срабатывала, поэтому мы, наконец, увидели, что загрузка отключена параметром Include/Exclude, и сняли флажок для нашей dll. Теперь наши точки останова совпадают! Странно то, что... мы не знаем, как он попал туда в первый раз! - person Josh P; 03.03.2017
comment
Вы также можете щелкнуть правой кнопкой мыши проект, который хотите исключить, выбрать «Свойства» > «Сборка» > «Дополнительно» и установить для параметра «Отладочная информация» значение «Нет». - person user886079; 19.07.2020