如何使DIA释放其对pdb文件的锁定?

时间:2013-05-16 12:16:07

标签: debugging pdb-files dia-sdk

如何让DIA释放对pdb文件的锁定?

我加载一个pdb并创建一个如下所示的会话,一切正常,我可以使用该会话从pdb获取数据。

当我完成pdb后,我释放了会话和DiaSource,但是DIA仍然锁定了pdb文件,在我的应用程序退出之前,我无法删除资源管理器中的pdb文件。如何告诉DIA释放pdb文件上的锁?

CoCreateInstance(__uuidof(DiaSource),
    NULL,
    CLSCTX_INPROC_SERVER,
    __uuidof(IDiaDataSource),
    (void**)&mp_DiaSource);

mp_DiaSource->loadAndValidateDataFromPdb(
    (LPCOLESTR)p_wide_filename, &m_Sig, 0, m_Age);

mp_DiaSource->openSession(&mp_Session);

// do stuff with mp_Session here

mp_Session->Release();

mp_DiaSource->Release();
非常感谢。

斯图尔特。

1 个答案:

答案 0 :(得分:1)

至少对于msdia90.dll,确实在Release()之后文件句柄没有关闭,可能的解决方法是调用loadDataFromIStream(),并传递IStream而不是路径到但是,加载pdb文件,我从不测试这是否真的有用。