Visual studio 2015 Visual studio 2015:不会命中断点,没有为此文档加载符号

Visual studio 2015 Visual studio 2015:不会命中断点,没有为此文档加载符号,visual-studio-2015,breakpoints,debug-symbols,Visual Studio 2015,Breakpoints,Debug Symbols,当我试图在Windows 7 64位+Visual Studio 2015上构建OpenImageIO时,出现了这个问题。OpenImageIO库的已编译二进制文件中存在一些问题,因此我想调试它的一些源代码来查找问题。但断点没有命中 具体来说,我用来调试OpenImageIO的应用程序代码是Tools\iconvert,当我执行到以下行时,代码崩溃: ImageInput *in = ImageInput::open (in_filename.c_str()); ImageInput::ope

当我试图在Windows 7 64位+Visual Studio 2015上构建OpenImageIO时,出现了这个问题。OpenImageIO库的已编译二进制文件中存在一些问题,因此我想调试它的一些源代码来查找问题。但断点没有命中

具体来说,我用来调试OpenImageIO的应用程序代码是
Tools\iconvert
,当我执行到以下行时,代码崩溃:

ImageInput *in = ImageInput::open (in_filename.c_str());
ImageInput::open
的实现包含在解决方案的项目OpenImageIO中的ImageInput.cpp中。我在调试配置下编译了这两个项目,该配置支持生成调试信息。但是,当我在第86行的
ImageInput::open
定义处设置断点时,断点为白色,表示该断点无效,并且提示当前未命中该断点,如下面的屏幕截图所示:

我检查了其他地方,比如参考属性,它清楚地表明iconvert正在链接到OpenImageIO库的调试版本:

此外,调试配置设置正确(据我所知):


那么,为什么不能命中断点呢?我应该如何解决这个问题?如果您需要更多信息进行故障排除,请让我知道。非常感谢。

大约一年前,当我尝试使用PyCharm(在Windows上运行)远程调试Autodesk Maya(在Linux上运行)中执行的python脚本时,遇到了类似的问题。后来我发现这是因为Linux的路径——它是Linux中正在运行的一个搜索路径中的一个旧python脚本,而不是我假设正在运行的源文件夹中的脚本。所以我认为这里的问题应该是一样的

OpenImageIO依赖于许多dll形式的第三方库,因此昨天,我将它们全部放在C:\Windows\system32中以便于搜索。但由于存在一些问题,今天我更改了CMake和rebuild的设置,在重建过程中,我改变了主意,将新编译的DLL放入OIIO的bin文件夹(我不想弄乱系统目录)。为了使更改生效,我将此文件夹添加到PATH中,并从system32中删除了旧的有问题的DLL。但是我错过了一个——OpenImageIO.dll,它负责ImageInput::open!我太相信我的记忆了;我应该按创建日期对文件进行排序


当然,一开始我并不知道,所以根据我以前的经验,我首先检查加载的dll是否是我刚刚构建的dll。这是通过VS2015中的“调试->窗口->模块”菜单完成的。啊哈,windows清楚地显示加载的是system32中的OpenImageIO.dll,这提醒了我发生了什么。因此,我删除了(使用shift)那个旧dll,现在一切都正常工作了——我终于在Windows 7上用VS2015从源代码到64位成功地构建了OpenImageIO,包括所有第三方库。

您能够构建整个项目或解决方案吗?是的,我构建了OpenImageIO的整个解决方案。