Если мы хотим производить высококачественный наш Oracle BRM программного обеспечения, мы должны соответствовать некоторым требованиям, предъявляемым к процессу разработки. Особенно важно включить в процесс разработки хорошие методы тестирования и отладки.
Тестирование - это процесс поиска багов или ошибок в программном продукте, который выполняется вручную тестировщиком или может быть автоматизирован.
Отладка это процесс поиска и устранения дефектов или проблем в компьютерной программе, которые препятствуют корректной работе компьютерного программного обеспечения или системы. По сути, это процесс исправления ошибок, найденных на этапе тестирования. За отладку отвечает программист или разработчик, и ее невозможно автоматизировать.
Отладка пользовательского кода опкодов политики Oracle BRM
При настройке опкодов политики в Oracle BRM Часто возникает необходимость отладки кода, чтобы найти потенциальные ошибки или проанализировать поведение кода. Некоторый базовый анализ может быть выполнен с помощью регистрации отладочных сообщений и анализа журналов, но гораздо более продвинутым и мощным методом является использование отдельного инструмента - отладчика. В этой статье мы рассмотрим, как можно использовать отладчик GDB с открытым исходным кодом для отладки процесса Oracle BRM cm, который также выполняет некоторый пользовательский код (см. рисунок ниже).
GDB это отладчик с открытым исходным кодом, который предоставляет множество продвинутых и мощных инструментов для анализа и отладки нашего кода. Некоторые из основных возможностей GDB - это точки останова (условные/неусловные), часы, обратная трассировка и инкрементное выполнение кода. Конечно, Вы также можете просматривать и изменять значения переменных и вызывать различные функции. Теперь давайте рассмотрим, как мы используем GDB с процессом cm на практике.
Отладка на практике
Во-первых, мы должны получить PID нашего процесса CM:
ps x
Найдите PID процесса CM и используйте его для подключения к этому процессу с помощью GDB:
gdb cm
Теперь открывается оболочка GDB, в которой мы можем выполнять различные команды, поддерживаемые GDB. Каждое новое соединение, установленное с CM, вызывает порождение нового дочернего процесса CM из родительского CM. Мы хотим, чтобы GDB также отслеживала такие дочерние процессы. Выполните следующую команду в оболочке GDB:
(gdb) установить режим follow-fork-mode child
В зависимости от Ваших потребностей, Вы можете также захотеть изучить команды set detach-on-fork и attach. Теперь давайте установим точку останова на реализацию опкода политики, как показано в следующем примере:
(gdb) break fm_act_pol_post_reauthorize.c:192
Когда мы теперь запустим выполнение опкода политики, оно будет прервано точкой останова (или даже раньше, она сообщит нам, что был порожден новый ребенок). Затем мы можем пошагово проследить за ходом выполнения кода с помощью команд next (аббр. n) или step. Если нас интересует значение какой-то переменной, мы можем вывести его на печать, используя:
В нашем распоряжении также имеется множество более продвинутых и мощных возможностей, которые подробно описаны в документации по GDB и во встроенной помощи. Приглашаем Вас изучить их, чтобы понять, как они могут помочь Вам.