如果我们想生产出高质量的 甲骨文BRM 在开发软件的过程中,我们必须满足一些要求。在开发过程中采用良好的测试和调试技术尤为重要。
测试是在软件产品中发现 bug 或错误的过程,可由测试人员手动完成,也可实现自动化。
调试 是指发现并解决计算机程序中妨碍计算机软件或系统正确运行的缺陷或问题的过程。它基本上是一个修复在测试阶段发现的错误的过程。调试工作由程序员或开发人员负责,无法实现自动化。
调试 Oracle BRM 策略操作码自定义代码
在 甲骨文BRM 经常需要调试一些代码,以发现潜在的错误或分析代码行为。一些基本的分析可以通过记录一些调试信息和分析日志来完成,但更高级、更强大的方法是使用单独的工具--调试器。本文将介绍如何使用开源调试器 GDB 调试 Oracle BRM cm 进程,该进程还执行一些自定义代码(见下图)。
GDB 是一个开源调试器,它提供了许多先进而强大的工具来分析和调试我们的代码。GDB 的一些基本功能包括断点(有条件/无条件)、监视、回溯和增量代码执行。当然,你还可以查看和修改变量值,调用各种函数。现在,让我们看看如何在 cm 进程中实际使用 GDB。
调试实践
首先,我们必须获取 CM 进程的 PID:
ps x
查找 CM 进程 PID,并用它通过 GDB 连接到该进程:
gdb cm
现在 GDB shell 打开,我们可以在其中执行 GDB 支持的各种命令。与 CM 建立的每个新连接都会从父 CM 生成新的子 CM 进程。我们希望 GDB 也能跟踪这些子进程。在 GDB shell 中执行以下命令:
(gdb) 设置 follow-fork-mode child
根据你的需要,你可能还想探索命令 set detach-on-fork 和 attach。现在,让我们在某些策略操作码的实现上设置一些断点,就像下面的例子一样:
(gdb) break fm_act_pol_post_reauthorize.c:192
现在,当我们触发策略操作码执行时,它将被断点中断(甚至在断点中断之前,它就会通知我们新的子代已经生成)。然后,我们就可以使用 next(下一步)或 step 命令逐步跟踪代码流。如果我们对某个变量的值感兴趣,可以使用以下命令将其打印出来:
打印 <变量
我们还拥有许多更先进、更强大的功能,这些功能在 GDB 文档和集成帮助中都有详细介绍。我们邀请你研究它们,看看它们能如何帮助你。