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

时间:2017-06-08 02:43:52

标签: 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::open的实现包含在解决方案的项目OpenImageIO中的imageinput.cpp中。我在Debug配置下编译了两个项目,它可以生成调试信息。但是当我在第86行的ImageInput::open定义处设置断点时,断点为白色表示它无效,并且提示说断点当前没有被击中,如下面的屏幕截图所示: enter image description here

我检查了其他地方,比如参考属性,它清楚地表明iconvert链接到OpenImageIO库的Debug版本: enter image description here

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

那么,为什么断点不能被击中?我该如何解决这个问题?如果您需要更多信息进行故障排除,请告诉我们。非常感谢。

1 个答案:

答案 0 :(得分:0)

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

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

当然我起初并不知道它,所以根据我之前的经验,首先我检查了加载的dll是否是我刚建立的那个。这是通过VS2015中的菜单DEBUG-> Windows->模块完成的。啊哈,那个窗口清楚地显示它是加载的system32中的OpenImageIO.dll,这让我想起了发生了什么。所以我删除了(带移位)旧的dll和一切正常按预期工作 - 我终于使用VS2015在Windows 7 64位上从源头从头开始成功构建OpenImageIO,包括所有第三方库。