1.问题
如果你手里有一个现成的EXE, 以及EXE相关联PDB文件, 还有相关联的CPP文件和H文件. 你如何用VS调试? (当然你可以选择WinDbg.不过这里就讨论VS)。用 NMAKE 和 MAKEFILE 创建工程。已经编译链接好了。 得到了 EXE和PDB。 现在需要调试修改一下. 你又喜欢用VS调试, 怎么办? 对. 这就是下面要说的。
2.基本点
确保PDB文件和CPP文件以及H文件的相对路径不发生变化。因为PDB中保存了CPP文件和H文件的相对路径, 据此调试器才知道去哪里找源文件和头文件。如果挪动PDB文件或者CPP文件或者H文件,会导致它们之间的相对路径发生改变, 调试器就找不到符号。就没法打断点,后续的调试工作也就无法进行。
3.方法步骤
3.1.新建一个空的解决方案
3.2.构建源码项目
文件->新建->从现有代码创建项目->选择项目文件位置
,可以新建一个空文件夹,比如VS_DEBUG\curlSrc, 项目名称比如说curlSrc, 然后将文件从这些文件夹添加到项目中,确保所有你写的CPP和H文件都在这个目录(这些源代码文件只是会被引入项目, 但不会拷贝到VS_DEBUG\curlSrc目录下, 也就意味着你仍然可以随时修改代码并用NMAKE构建而不必担心代码在VS中更新的问题)。
注意这一步非常重要, 如果你只是单纯地用VS打开某个源文件而不是把所有的源文件组织到一个解决方案里的话,
你是无法使用"转到定义", “转到声明”, “查看定义”, "查找所有引用"这些功能的, 你查看代码的时候会很麻烦。
输入项目名称:
添加包含源码文件夹:
完成即可创建源码项目工程。
3.3.添加pdb文件目录
找到pdb所在目录,如:E:\OpenSource\libCurl\VS2019\curl-7.61.0\builds\libcurl-vc16-x64-debug-dll-ssl-dll-zlib-dll-ssh2-dll-ipv6-sspi-obj-lib
把PDB文件的路径添加进去并打勾即可。
3.4.调试目标exe
右键源码解决方案,添加现有项目,选择目标exe文件,如下图所示:
将新项目设为启动项目:
然后在属性中设置调试参数,如入口参数。
4.源码断点
接下来就可以幸福的调试分析了。