0

我正在使用 VS2012 并构建我的 java 应用程序使用的四个 dll。这 4 个 dll 的调试版本工作正常,发布版本使 java 应用程序崩溃。我收到以下错误:

** dbip.exe 中 0x6DEC3D05 (jvm.dll) 的第一次机会异常:0xC0000005:访问冲突写入位置 0x012C0980。“dbip.exe”(Win32):已加载“C:\Windows\System32\wintrust.dll”。无法找到或打开 PDB 文件。

STATUS_STACK_BUFFER_OVERRUN 遇到**

以下是我的示例代码: 在我的 .h 代码中,我有:

class _CABInterface : public CInterface
{
public:
    virtual ~CABInterface(void);

    static CABInterface* GetABInterface();
private:
    CABInterface(void);
    static CABInterface* m_pABInterface;
....
}

在我的 .cpp 代码中:

CABInterface::CABInterface()
{//line A
    init();  //line B
}

CABInterface* CABInterface::GetABInterface()
{//line C
    if (m_pABInterface == NULL)
    {
        m_pABInterface = new CABInterface();
    }

    return m_pABInterface;
}

在我的另一个 .cpp 文件中,我调用 GetABInterface() 如下:

CInterface* pJtagInterface = CABInterface::GetABInterface();  //line D

我在 D 行设置断点;如果我使用调试版本,从 D 行转到 C 行,然后转到 A 行、B 行。一切都按我的预期工作;

但是,当我使用发布版本时,从 D 行直接跳转到 A 行。 C 行永远没有机会执行;

奇怪的是在执行 B 行之后,它又回到 A 行,内存变得混乱。

有人知道我做错了什么吗?我以为是因为我的编译设置,但是哪一个?提前致谢!!!

歌曲

4

1 回答 1

0

有关“无法找到或打开 PDB 文件”的错误表明它仍在调试中运行。PDB 未在已发布版本中使用。

我将验证您的项目属性 > 构建 > 输出 > 输出路径是否将转到调试和发布配置的正确位置。

您也可以在构建之前尝试“清洁”。

此外,调试不会中断{(如果这是您的代码的格式)。它只会在实际的代码行上中断。如果它在不包含实际代码的行上中断,则它正在运行您的代码的旧版本 - 从某个地方。

于 2013-10-21T18:56:54.003 回答