【发布时间】:2011-09-23 08:39:47
【问题描述】:
OTN Thread: Does Oracle provide public Symbol Files (PDB) for OCCI/OCI ?
在使用OC[C]I 在 Windows(使用 Visual Studio 或 WinDBG)下调试应用程序时,如果有 Oracle OCI/OCCI 库的符号文件(PDB 文件)通常会很方便。 (public symbol files,就像微软为所有系统库提供的一样)
Oracle 是否提供这些?
注意:Oracle 库特别欢迎这些公共符号文件,因为我们确实在调用堆栈位于 oci/occi 库内部的情况下发生了一些崩溃,而且看起来确实(可能是优化)用于生成这些 DLL 的设置有效地防止 Visual Studio 在这些库中显示任何可用的调用堆栈以供用户转储。
作为对上一段的进一步澄清:这并不意味着 OCCI 库中的崩溃。这只是意味着如果一个线程恰好在 OCCI 调用中并且生成了用户转储(无论出于何种原因 - 可以根据任何正在运行的应用程序的需要生成),则该线程的调用堆栈(至少半)混乱.因此,公共符号文件会派上用场。
【问题讨论】:
-
即使崩溃发生在 OCI 中,也可能只是因为向 OCI 调用提供了错误的参数。大多数调用采用 void* 参数,这些指针带有枚举值或字节大小,因此这些调用中的任何错误都可能导致 OCI 内部难以调试的崩溃。我也经常希望 .PDB 用于 oci.dll。
-
@ddevienne - 足够公平。请注意,尽管我们使用的是 OCCI、C++ API,但据我所知,它更难误用。
-
对。我们从 OCCI 开始,但在多次达到其限制之后,而且由于它在提供使用新版本 Visual Studio 编译的 .dll 时总是滞后,我们切换到 OCI,尽管学习曲线陡峭,做 Oracle 支持的任何事情,并且作为一个 C 库可以与任何 Visual Studio 一起使用。
-
@ddevienne - 不错的信息。谢谢。
标签: c++ windows oracle debug-symbols oracle-call-interface