【问题标题】:Does Oracle provide public Symbol Files (PDB) for OCCI/OCI?Oracle 是否为 OCCI/OCI 提供公共符号文件 (PDB)?
【发布时间】: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 - 不错的信息。谢谢。
  • 此信息不应该成为这个问题的“答案”,但让我仍然在此处为感兴趣的各方添加它作为评论:并非全部,但大多数二进制文件,Oracle运送专有格式的 .SYM 文件 - 当产品崩溃等时,他们似乎在自己的事件记录中使用它。Denis Yurichev 的 RE4B 书中包含有关其格式的整个部分 9.5

标签: c++ windows oracle debug-symbols oracle-call-interface


【解决方案1】:

不,Oracle 不为 OCCI 和 OCI 提供这些文件。 (至少不是 10 版,也不是 11 版)

我真的不明白这个原因,但试图支持 Oracle 的任何推理肯定会导致精神错乱。

我应该添加一个quote from the Oracle forums

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

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

【讨论】:

    猜你喜欢
    • 2015-01-01
    • 1970-01-01
    • 2010-12-04
    • 2015-05-08
    • 2012-09-24
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多