【问题标题】:c++ Debugging Exception c0000139c++调试异常c0000139
【发布时间】:2009-10-30 11:59:07
【问题描述】:

我目前正试图通过我们的一个应用程序找出客户端崩溃的原因。我已将应用程序包装在一个异常处理程序中,该处理程序在发生崩溃时会创建一个小型转储。

应用程序崩溃,出现异常 c0000139(其中没有大量文档)。

调用栈是这样的

ntdll.dll!_RtlRaiseStatus@4()  + 0x26 bytes 
ntdll.dll!_LdrpSnapThunk@32()  + 0x26f48 bytes  
ntdll.dll!_LdrpSnapIAT@16()  + 0xd9 bytes   
ntdll.dll!_LdrpHandleOneOldFormatImportDescriptor@16()  + 0x7a bytes    
ntdll.dll!_LdrpHandleOldFormatImportDescriptors@16()  + 0x2e bytes  
ntdll.dll!_LdrpWalkImportDescriptor@8()  + 0x11d bytes  
ntdll.dll!_LdrpLoadDll@24()  - 0x265 bytes  
ntdll.dll!_LdrLoadDll@16()  + 0x110 bytes   
kernel32.dll!_LoadLibraryExW@12()  + 0xc8 bytes 
odbc32.dll!_ODBCLoadLibraryEx@12()  + 0x29 bytes    
odbc32.dll!_LoadDriver@12()  + 0x119f bytes 
odbc32.dll!_SQLDriverConnectW@32()  + 0x1be bytes   
odbc32.dll!_SQLDriverConnect@32()  + 0x125 bytes

看起来程序正在尝试创建一个数据库连接(通过 ODBC 到 Oracle),但不知何故未能找到 dll 或找到了具有错误入口点的 dll。

我想知道是否有人可以提供有关如何进一步追踪此问题的建议,或者是否有人遇到过此问题,我很想听听您是如何解决的。

提前致谢

丰富

【问题讨论】:

    标签: c++ exception debugging odbc crash


    【解决方案1】:

    那个异常代码是没有找到入口点 - 有东西试图加载一个 DLL,而 DLL 找不到它需要的所有 DLL。

    使用depends.exe 显示DLL 需要什么。

    【讨论】:

    • 感谢您的回复,但是如何找到源dll?因为我没有调用 LoadLibrary,所以我真的不知道它正在加载什么 dll。
    • 我认为 Dependes.exe 不会帮助我,因为 DLL 加载是由 ODBC 框架动态调用的。
    • 您是否在 odbc.dll 和 oracle dll 上依赖.exe?
    • 我确实做到了,而且一切似乎都触手可及。
    【解决方案2】:

    启用加载程序快照 (gflags -i yourapp.exe +sls) 并让它查明无法找到/加载的库(在调试器下启动程序将显示所有加载程序诊断信息)。

    或者,通过检查 LoadLibraryExW 调用的参数,从故障转储中获取库的名称。

    【讨论】:

    • 我无法在我的机器上重新创建崩溃。更糟糕的是,它确实崩溃的客户端机器在纽约,而我在伦敦。转储仅转储堆栈和内存,因为它不是执行完整内存转储的选项。
    • 重新安装oracle驱动?如果您的访问受限,可能比调试更快。或者ODBC安装有没有测试程序看能不能连接
    • 更糟糕的是,问题是间歇性的,这确实无济于事。它也涉及纽约的几个用户。因为问题是间歇性的,我不确定重新安装是否会有所帮助。 ODBC 加载程序尝试加载的 oracle 驱动程序位于映射的网络驱动器上。我能想到的唯一问题是驱动器映射可能失败。但同样,这只是猜测工作......
    • C在本地硬盘上安装驱动程序:) Windows 不像 Unix 那样喜欢网络东西——所以你需要远程安装的方法——等等
    【解决方案3】:

    感谢所有回复。

    事实证明(至少这看起来是问题所在)我们遇到了配置问题。一半的软件被设置为加载 9i 驱动程序,一半的软件期望加载 10g 驱动程序。

    现在还为时尚早,我们需要对此进行测试,但似乎这很可能是原因。

    干杯 丰富

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-10-10
      • 1970-01-01
      • 2012-12-31
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2013-04-25
      相关资源
      最近更新 更多