Исключение нулевого указателя генерируется, когда приложение пытается использовать null в случае, когда требуется объект. К ним относятся:
null
. null
. null
, как если бы это был массив. null
, как если бы это был массив. null
как будто это было значение Throwable. Приложения должны бросать экземпляры этого класса, чтобы указать на другие незаконные использования объекта null
.
Ссылка: http://docs.oracle.com/javase/8/docs/api/java/lang/NullPointerException.html
Без отладочной информации можно только отладить на уровне ASM. Хорошо Вы добираетесь бит [еще 110] информация, но Вы не собираетесь становиться очень далекими, если Вы не понимаете немного ASM и код, компилятор генерирует. Это позволит Вам сделать простой контроль локальных переменных и т.д. , если Вы будете знать то, что Вы делаете.
, Если у Вас есть источник, будет намного легче только перекомпилировать его.
Все, что можно сделать, посмотреть на регистры и содержание стека - необходимо будет сделать все путем выведения того, для чего используются вещи, как Draemon упоминает.
Для начала вы можете сделать;
gdb "whatever"
break __libc_start_main
r
, который установит точку останова в коде crt0 libc и позволит вам прервать работу перед основным, даже если целевой двоичный файл полностью удален.
Это переведет вас в рабочее состояние в точке останова перед большей частью пользовательского кода. Затем вы можете пошагово, разобрать, сбросить память и т. Д., Сколько душе угодно.
Это работает на всех платформах, тот факт, что вы спрашиваете об IA-32 / x86, не имеет значения.