Многие объяснения уже присутствуют, чтобы объяснить, как это происходит и как это исправить, но вы также должны следовать рекомендациям, чтобы избежать NullPointerException
вообще.
См. также: A хороший список лучших практик
Я бы добавил, очень важно, хорошо использовать модификатор final
. Использование "окончательной" модификатор, когда это применимо в Java
Сводка:
final
для обеспечения хорошей инициализации. @NotNull
и @Nullable
if("knownObject".equals(unknownObject)
valueOf()
поверх toString (). StringUtils
StringUtils.isEmpty(null)
. Одна из моих любимых функций , "Когда Поражено..." опция, доступная на точке останова. Можно распечатать сообщение со значением переменной наряду с большой другой информацией, такой как:
$ADDRESS
- Текущая команда $CALLER
- Предыдущее Имя функции $CALLSTACK
- Стек вызовов $FUNCTION
- Текущее Имя функции $PID
- идентификатор $PNAME
Процесса - Имя Процесса $TID
- идентификатор $TNAME
Потока - Имя Потока у Вас может также быть он, выполняет макрос, но я никогда не использовал ту функцию.
Для .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
}
}
Как веб-разработчик, который работает с веб-сервисами, которые являются в том же решении как мой код фронтенда большую часть времени, я нашел, что способность к "присоединение" к процессу сэкономила время.
, Прежде чем я нашел это скрытое сокровище, я должен буду всегда устанавливать точку останова на некотором коде фронтенда, который названный методом веб-сервиса и ступают в него. Теперь, когда я знаю об этом приеме/функции, я могу легко установить точки останова на любой части моего кода, который я хочу, к которому сохраняет меня загрузки времени и усилия.
$exception
в окне часов покажет исключение, которое в настоящее время обрабатывается, даже если у Вас нет выгоды, которые присваивают Exception
экземпляр к именованной переменной.
Можно загрузить windbg расширения в отладчик Visual Studio и использовать их из непосредственного окна.
Как отправлено в другом сообщении Sara Ford делает текущий ряд на отладчике VS.
Ее блог является лучшим источником подсказок VS: http://blogs.msdn.com/saraford/archive/tags/Visual+Studio+2008+Tip+of+the+Day/default.aspx
Это - вид старого. Если Вы добавите отслеживаемое выражение err,hr
, то это будет содержать результат GetLastError (), отформатированный как HRESULT (VC ++ только отладчик).
Некоторые полезные сочетания клавиш.
F11
для продвижения в метод. Shift-F11
для продвижения из метода. F10
для переступания через метод. Вы можете щелкнуть правой кнопкой мыши объект в окне Watch и выбрать Make Идентификатор объекта.
Он присвоит этому экземпляру идентификационный номер, что позволит вам увидеть в сложном графе объектов, какие объекты относятся к одному и тому же экземпляру.
Вещи, которые я часто использую:
Щелкните пункт меню «Отладка | Исключения» (или Ctrl-D, E для краткости), и вы можете включить прерывание в то время, когда генерируется любое исключение , или выбрать не прерываться на определенных исключениях.
Вы можете настроить отладчик для загрузки некоторых исходных кодов и символов платформы с сервера MS и перехода в код платформы. (Некоторые библиотеки, например System.ServiceModel, пока недоступны). Он находится в окнах «Параметры» в разделе «Отладка». См. MSDN How-To .
Вы можете использовать отладчик VS.NET для отладки Javascript, запущенного в IE. Вам просто нужно установить отладчик javascript IE и включить отладку javascript в настройках IE. Затем при ошибке JS появится диалоговое окно «Вы хотите отладить», и вы можете выбрать отладку в VS.NET.