当前位置:C++技术网 > 资讯 > 使用VS的西红柿插件时调试断点定位到了错误的代码文件的解决办法

使用VS的西红柿插件时调试断点定位到了错误的代码文件的解决办法

更新时间:2015-12-19 16:45:55浏览次数:1+次

    在VS上编程,为了提高编码效率和调试跟踪,我们使用VS的西红柿插件,名称为VAssistX。然而经常调试时发现在代码中打断点,结果发现不会执行断点这个cpp文件的代码,而是另外一个同名的源文件的代码。这让人很郁闷。
    通过调查和研究,得到了问题的原因。VAssistX插件跟踪cpp文件,内部使用了索引库来记录项目中的各个文件的位置。然后每次跟踪的时候,就从索引库找文件的路径,然后开始跟踪。
    如果你将项目的文件复制一份,然后还是放在和之前的项目同一个文件夹下,而且项目里的代码文件都没有改变名称。我们一般做这个就是备份一下代码,比如你要写个新功能,要对现有的代码重新调整结构,改动的幅度很大,涉及到代码的设计结构,搞不好可能毁掉项目。因为这个不是功能的增量增加功能,而是结构调整下的开发,会伤筋动骨,所以,要备份好一个版本,然后一般就放在同一个目录下。改个名称为备份,就算是备份了。

    如下图所示:

   

    上面一个就是开发中的项目文件夹,下面就是备份的一个。万一开发失败,代码毁了,直接用备份的复制一份从头开始就好了。不至于毁了所有代码,然后一个一个的去修改回来,那样会带来很多毛病,你心里也不踏实的。
    这样的话,你将原先的项目打上了备份,然后在复制出来的项目里继续开发。然后在调试是发现断点进入不了你的cpp文件,而是进入了另外的一个同名文件。其实是因为VAssistX没有更新索引库,所以识别到这个新项目文件夹的文件名时以为是原先那个项目,所以直接就打开了之前的那个文件夹的cpp,而不是你现在的复制生成的项目里的cpp。所以就是这个问题啦。
    出现这个问题的原因就是,原先的路径依然存在对应的文件,并且现在的文件的名称也和之前的一样,同时你现在的项目是复制之后的项目,而不是原始的那个项目文件,才出现了问题的。
    既然知道原因,解决起来还是很容易的。
    第一,你将备份的项目文件夹整个剪切到另外的一个不可能被西红柿插件发现的文件夹下即可,你可以放入上一级目录或者新建一个文件夹里,甚至是放在另外一个盘里。这样自然之前的路径就找不到文件,就会自动搜索更新索引了。
    第二,你可以将现在开发的项目换一个目录,同上。
    第三,如果项目简单,当前Cpp文件没有被其他文件引用,即没有被include,那么你可以临时改一下cpp文件名,这样就会触发西红柿插件更新索引,即调试运行一次,然后将文件名改回来也可以解决。
    这里就提供这三个方法吧。你懂得了错误的根本问题所在,相信你也可以灵活自由的解决问题。