C++ Oracle是否为OCCI/OCI提供公共符号文件(PDB)?

C++ Oracle是否为OCCI/OCI提供公共符号文件(PDB)?,c++,windows,oracle,debug-symbols,oracle-call-interface,C++,Windows,Oracle,Debug Symbols,Oracle Call Interface,在Windows(使用Visual Studio或WinDBG)下调试应用程序时,如果Oracle OCI/OCCI库中有符号文件(PDB文件),使用它通常会很方便。(,就像Microsoft为所有系统库提供的一样) 甲骨文是否提供这些服务 注意:这些公共符号文件对于Oracle库尤其受欢迎,因为在调用堆栈位于oci/occi库内部的情况下,我们确实发生了一些崩溃,而且看起来(可能是优化)用于生成这些DLL的设置有效地防止Visual Studio在这些LIB中显示用户转储的任何可用调用堆栈 作

在Windows(使用Visual Studio或WinDBG)下调试应用程序时,如果Oracle OCI/OCCI库中有符号文件(PDB文件),使用它通常会很方便。(,就像Microsoft为所有系统库提供的一样)

甲骨文是否提供这些服务

注意:这些公共符号文件对于Oracle库尤其受欢迎,因为在调用堆栈位于oci/occi库内部的情况下,我们确实发生了一些崩溃,而且看起来(可能是优化)用于生成这些DLL的设置有效地防止Visual Studio在这些LIB中显示用户转储的任何可用调用堆栈


作为对上一段的进一步澄清:这并不意味着OCCI libs崩溃。这仅仅意味着,如果一个线程恰好位于OCCI调用中,并且生成了一个用户转储(无论出于何种原因,可以根据需要为任何正在运行的应用程序生成),那么该线程的调用堆栈(至少是半)就乱了。因此,公共符号文件将非常方便。

不,Oracle不为OCCI或OCI提供这些文件。(至少不适用于版本10,也不适用于版本11)

我真的找不到原因,但试图支持甲骨文的任何推理肯定会导致精神错乱

我要补充一点:

不幸的是,不仅是在出现错误的情况下,支持人员才能请求这样的请求 Oracle开发中的符号文件仅提供调试 名为*d.dll的库


这不是Oracle的官方回应,但我想用户知道他在说什么。

即使崩溃发生在OCI内部,也可能是因为OCI调用提供了错误的参数。大多数调用都采用void*参数,这些参数带有枚举值或指针的字节大小,因此这些调用中的任何错误都可能导致OCI内部难以调试的崩溃。我经常希望oci.dll也有.PDBs。@ddevienne-这很公平。请注意,我们使用的是OCI,C++ API,而且我可以说这是一个更难误会。我们从OCCI开始,但在多次遇到它的局限性之后,也因为它总是滞后于提供用新版本的Visual Studio编译的.dll,所以我们转向OCI,尽管学习曲线陡峭,但它可以做Oracle支持的任何事情,作为一个C库与任何Visual Studio一起工作。@ddevienne-很好的信息。谢谢。这些信息不应该成为这个问题的“答案”,但我还是要在这里为感兴趣的各方添加一条评论:不是所有的,但大多数二进制文件,Oracle都提供了.SYM文件,这些文件都是专有格式的-当产品崩溃时,他们似乎在自己的事件记录中使用它,丹尼斯·尤里切夫(Denis Yurichev)的书中包含了一整节关于其格式的内容。