Возможно, эти
комплект парсинга параметра командной строки JArgs для Java - этот крошечный проект предоставляет удобный, компактный, предварительно упакованный и всесторонне зарегистрированный пакет синтаксических анализаторов параметра командной строки для использования программистов Java. Первоначально, анализируя совместимый со стилем GNU 'getopt' обеспечивается.
ritopt, Окончательный Синтаксический анализатор Опций для Java - Хотя, несколько стандартов параметра командной строки были предварительно изложены, ritopt следует соглашениям, предписанным в выбирать пакете.
Вы можете попробовать использовать «точку перехвата» ( catch throw
), чтобы остановить отладчик в точке, где генерируется исключение.
Следующий отрывок Из руководства gdb описывается функция точки перехвата.
5.1.3 Установка точек перехвата
Вы можете использовать точки перехвата, чтобы заставить отладчик останавливаться для определенных видов программных событий, таких как исключения C ++ или загрузка общего библиотека. Используйте команду catch для установки точки перехвата.
catch событие
Остановить, когда происходит событие . Событие может быть любым из следующих:
throw
Вызов исключения C ++.
catch
Перехват исключения C ++.
exec
Вызов функции exec. В настоящее время это доступно только для HP-UX.
fork
Вызов fork. В настоящее время это доступно только для HP-UX.
vfork
Вызов vfork. В настоящее время это доступно только для HP-UX.
load или load libname
Динамическая загрузка любой разделяемой библиотеки или загрузка библиотеки libname. В настоящее время это доступно только для HP-UX.
unload или unload libname
Выгрузка любой динамически загружаемой разделяемой библиотеки или выгрузка имени библиотеки libname. В настоящее время это доступно только для HP-UX.
tcatch event
Установите точку перехвата, которая активна только для одной остановки. Точка перехвата автоматически удаляется после первого перехвата события.
Используйте команду info break
, чтобы перечислить текущие точки перехвата.
В настоящее время существуют некоторые ограничения для обработки исключений C ++ (бросок перехвата и catch catch) в GDB:
Если вы вызываете функцию в интерактивном режиме, GDB обычно возвращает управление вам, когда функция завершает выполнение. Однако, если вызов вызывает исключение, вызов может обойти механизм, который возвращает вам управление, и привести к тому, что ваша программа либо прервется, либо просто продолжит выполнение, пока не достигнет точки останова, не перехватит сигнал, который GDB ожидает, или завершится. Это так, даже если вы установили точку перехвата для исключения; точки перехвата исключений отключены в интерактивных вызовах.
Вы не можете вызвать исключение в интерактивном режиме.
Вы не можете установить обработчик исключений в интерактивном режиме.
Иногда перехват - не лучший способ отладки обработки исключений: если вам нужно точно знать, где возникает исключение, лучше остановиться перед вызовом обработчика исключения, так как таким образом вы можете увидеть стек до любой раскрутки происходит. Если вместо этого вы установите точку останова в обработчике исключений, может быть нелегко выяснить, где было вызвано исключение.
Чтобы остановиться непосредственно перед вызовом обработчика исключений, вам необходимо некоторое знание реализации. В случае GNU C ++ исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. Раздел Точки останова, точки наблюдения и исключения).
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
может быть нелегко выяснить, где было вызвано исключение.Чтобы остановить работу непосредственно перед вызовом обработчика исключения, вам необходимо знать реализацию. В случае GNU C ++ исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. Раздел Точки останова, точки наблюдения и исключения).
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
может быть нелегко выяснить, где было вызвано исключение.Чтобы остановить работу непосредственно перед вызовом обработчика исключения, вам необходимо знать реализацию. В случае GNU C ++ исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. Раздел Точки останова, точки наблюдения и исключения).
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
Чтобы остановиться непосредственно перед вызовом обработчика исключений, вам нужно знать реализацию. В случае GNU C ++ исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. Раздел Точки останова, точки наблюдения и исключения).
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
Чтобы остановиться непосредственно перед вызовом обработчика исключений, вам необходимо знать реализацию. В случае GNU C ++ исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:
/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. Раздел Точки останова, точки наблюдения и исключения).
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. раздел Точки останова; точки наблюдения; и исключения) .
С условной точкой останова (see section Условия останова), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
исключения вызываются вызовом библиотечной функции с именем __raise_exception, которая имеет следующий интерфейс ANSI C:/* addr is where the exception identifier is stored.
id is the exception identifier. */
void __raise_exception (void **addr, void *id);
Чтобы отладчик перехватил все исключения до того, как произойдет какое-либо разворачивание стека, установите точку останова на __raise_exception (см. раздел Точки останова; точки наблюдения; и исключения) .
С условной точкой останова (see section Условия останова), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.
С условной точкой останова (см. Раздел «Условия останова»), которая зависит от значения id, вы можете остановить свою программу при возникновении определенного исключения. Вы можете использовать несколько условных точек останова, чтобы остановить вашу программу при возникновении любого из ряда исключений.