我们在终端服务器上运行了一个 Delphi 应用程序,该应用程序不断生成转储文件。对于相同的 PID,它会以大约 1 秒的间隔不断创建转储文件,直到手动终止该进程。另一个奇怪的事情是转储文件的名称:
±_minidump_default_pid_7916_tid_x6590_2012_6_18_13_48_40.dmp
÷_minidump_default_pid_7916_tid_x6590_2012_6_18_13_48_42.dmp
k_minidump_default_pid_7916_tid_x6590_2012_6_18_13_48_39.dmp
Ô_minidump_default_pid_7916_tid_x6590_2012_6_18_13_48_41.dmp
Ž_minidump_default_pid_7916_tid_x6590_2012_6_18_13_48_40.dmp
转储文件并没有告诉我们太多信息,我们希望得到一些建议,告诉我们应该从哪里开始查找。
答案1
问题似乎出在我们用于与 Oracle 通信的组件上。此组件的新版本解决了该问题。
看起来发生了以下情况:
- 发生异常;
- 该组件尝试与 Oracle 执行操作;
- Oracle 触发了小型转储;
- 组件已重试。
更新:
显然,此问题是由 Oracle 客户端故障引起的。更新到最新版本的 Oracle 客户端已修复此问题。
答案2
当我收到这些文件时,这是程序中未处理的操作(尝试执行某项操作,但未测试返回结果或认为它不会起作用)。因此,在我制作的 .Net 应用程序中,需要进行代码更正。
由于应用程序问题,这些文件是由 Oracle 组件创建的。
如果您只是想避免创建这些文件,只需使用这些新值修改您的 sqlnet.ora 文件:
DIAG_ADR_ENABLED=OFF
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE
使用这些新行,不再有转储文件,并且实际应用程序崩溃时会在事件查看器中显示详细信息。
我希望这会有所帮助,知道这并不总是来自 Oracle Part ;-)