“Скрытые Секреты” отладчика Visual Studio.NET? [закрытый]

Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException вообще.

См. также: A хороший список лучших практик

Я бы добавил, очень важно, хорошо использовать модификатор final. Использование "окончательной" модификатор, когда это применимо в Java

Сводка:

  1. Используйте модификатор final для обеспечения хорошей инициализации.
  2. Избегайте возврата null в методы, например, при возврате пустых коллекций.
  3. Использовать аннотации @NotNull и @Nullable
  4. Быстрое завершение работы и использование утверждений, чтобы избежать распространения нулевых объектов через все приложение, когда они не должен быть пустым.
  5. Сначала используйте значения с известным объектом: if("knownObject".equals(unknownObject)
  6. Предпочитают valueOf() поверх toString ().
  7. Используйте null safe StringUtils StringUtils.isEmpty(null).

34
задан 5 revs, 4 users 100% 6 May 2012 в 16:44
поделиться

12 ответов

Одна из моих любимых функций , "Когда Поражено..." опция, доступная на точке останова. Можно распечатать сообщение со значением переменной наряду с большой другой информацией, такой как:

  • $ADDRESS - Текущая команда
  • $CALLER - Предыдущее Имя функции
  • $CALLSTACK - Стек вызовов
  • $FUNCTION - Текущее Имя функции
  • $PID - идентификатор
  • $PNAME Процесса - Имя Процесса
  • $TID - идентификатор
  • $TNAME Потока - Имя Потока

у Вас может также быть он, выполняет макрос, но я никогда не использовал ту функцию.

22
ответ дан Abel 27 November 2019 в 15:58
поделиться

Для .net приложений System.Diagnostics имеет много полезных вещей отладки. Debugger класс, например:

Debugger.Break(); // Programmatically set a break point
Debugger.Launch(); // Launch the debugger if not already attached
Debugger.IsAttached // Check if the debugger is attached

System.Diagnostics также имеет много хороших атрибутов. Два, которые я использовал, являются атрибутом дисплея отладчика для изменения деталей, помещенных в окно местных жителей и шаг через атрибут для пропуска кода, о котором Вы не заботитесь об отладке:

// Displays the value of Property1 for any "MyClass" instance in the debugger
[DebuggerDisplay("{Property1}")]
public class MyClass {
    public string Property1 { get; set; }

    [DebuggerStepThrough]
    public void DontStepInto() {
       // An action we don't want to debug
    }
}
18
ответ дан Matt Curtis 27 November 2019 в 15:58
поделиться

Как веб-разработчик, который работает с веб-сервисами, которые являются в том же решении как мой код фронтенда большую часть времени, я нашел, что способность к "присоединение" к процессу сэкономила время.

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

11
ответ дан Dan Herbert 27 November 2019 в 15:58
поделиться

$exception в окне часов покажет исключение, которое в настоящее время обрабатывается, даже если у Вас нет выгоды, которые присваивают Exception экземпляр к именованной переменной.

10
ответ дан Eric Schoonover 27 November 2019 в 15:58
поделиться
8
ответ дан Alexander Kojevnikov 27 November 2019 в 15:58
поделиться

Можно загрузить windbg расширения в отладчик Visual Studio и использовать их из непосредственного окна.

7
ответ дан 1800 INFORMATION 27 November 2019 в 15:58
поделиться

Как отправлено в другом сообщении Sara Ford делает текущий ряд на отладчике VS.

Ее блог является лучшим источником подсказок VS: http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx

6
ответ дан Aaron Powell 27 November 2019 в 15:58
поделиться

Это - вид старого. Если Вы добавите отслеживаемое выражение err,hr, то это будет содержать результат GetLastError (), отформатированный как HRESULT (VC ++ только отладчик).

5
ответ дан 1800 INFORMATION 27 November 2019 в 15:58
поделиться

Некоторые полезные сочетания клавиш.

  • F11 для продвижения в метод.
  • Shift-F11 для продвижения из метода.
  • F10 для переступания через метод.
4
ответ дан Eric Schoonover 27 November 2019 в 15:58
поделиться
  • Окно потоков, отладка -> Windows -> Темы. Вы можете заморозить и разморозить потоки и переключить активный поток. Это замечательно при отладке или репликации проблемы в многопоточном приложении.
  • Вы можете перетащить желтую стрелку «Следующая инструкция» в другое место. Когда программа возобновит работу, она возобновит выполнение с этого оператора. Вы можете добавить его на панель инструментов, синюю стрелку, которая называется Set Next Statement, но ее там нет по умолчанию.
  • Вы можете «отменить» навигацию, которую вы сделали, например, прокрутку, переход к другому файлу или переход к ссылке. Это сочетание клавиш ctrl-- (контроль минус.) Таким образом, вы можете перейти в функцию, просмотреть там код и вернуться туда, где вы были, не глядя.
9
ответ дан 27 November 2019 в 15:58
поделиться

Вы можете щелкнуть правой кнопкой мыши объект в окне Watch и выбрать Make Идентификатор объекта.

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

18
ответ дан 27 November 2019 в 15:58
поделиться

Вещи, которые я часто использую:

  • Щелкните пункт меню «Отладка | Исключения» (или Ctrl-D, E для краткости), и вы можете включить прерывание в то время, когда генерируется любое исключение , или выбрать не прерываться на определенных исключениях.

  • Вы можете настроить отладчик для загрузки некоторых исходных кодов и символов платформы с сервера MS и перехода в код платформы. (Некоторые библиотеки, например System.ServiceModel, пока недоступны). Он находится в окнах «Параметры» в разделе «Отладка». См. MSDN How-To .

  • Вы можете использовать отладчик VS.NET для отладки Javascript, запущенного в IE. Вам просто нужно установить отладчик javascript IE и включить отладку javascript в настройках IE. Затем при ошибке JS появится диалоговое окно «Вы хотите отладить», и вы можете выбрать отладку в VS.NET.

4
ответ дан 27 November 2019 в 15:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: