在Visual C ++ 6.0中寻找源文件的预设位置
由于某些代码的遗留特性,我们仍在使用Microsoft Visual 6.0(SP6)。当我第一次连接到正在运行的进程以对其进行调试时,当我进入进程时,它不知道源文件的位置。因此,在给定源文件名的情况下,它要求我导航到源树中的适当目录。它记住了这些目录,因此我不必两次输入相同的目录,但是仍然很痛苦。
有没有一种方法可以对树中的所有源文件目录进行预配置VC6?请注意,我们的项目是使用makefile(使用nmake)而不是DSP来构建的。
解决方案
源文件的路径记录在调试信息(程序数据库,.pdb)中。使计算机上的构建树与所构建的计算机相同。
是的。
进入
工具
选项
目录(标签)
我们可以设置SOURCES / LIBRARIES / INCLUDE目录位置。这些值适用于工作空间中的所有项目。
我不知道是否设置这些值将允许使用直接makefiles看到信息。
绝对路径信息未记录在我们的PDB文件中,因为我们故意不希望将源代码树绑定到特定的顶级目录。当部署它时,不可能将源树放置在与构建计算机相同的位置。
尽管我们的源代码树实际上包含数百个目录,但EvilTeach的解决方案确实可以达到预期的效果,因此手动输入目录有些麻烦。还有一个问题是,开发人员可能在任何给定的时间都有多个正在运行的源代码树,因此在调试给定的可执行文件时能够在这些树之间进行切换是必不可少的。
随后,我发现我们可以通过编程(至少在命令行中)通过直接更新注册表来切换一组源目录:
REGEDIT4 [HKEY_CURRENT_USER\Software\Microsoft\Devstudio.0\Build System\Components\Platforms\Win32 (x86)\Directories] "Source Dirs"="<path1>;<path2>"
那还不错,当然可以解决问题。
但是,我选择的解决方案是将SOURCE环境变量设置为包含所有源路径(以分号分隔的目录列表)。一个非常简单的批处理文件可以做到这一点,并允许在不同的树之间进行切换。然后,使用从环境中读取SOURCE(以及INCLUDE,LIB和PATH)中告诉它的选项,从命令行运行Visual C ++:
msdev /useenv
在"工具"->"选项"下,我们会看到来自SOURCE的目录确实已加载。然后,我可以添加到正在运行的进程,并且调试器可以找到调试到的所有代码。
生活变得更加轻松!