我必须调试一个正在运行的进程,我有匹配的PDB文件,但没有完整的源代码。是否可以在可用的C++源代码中调试特定的函数?我尝试在VS中配置PDB文件和源代码路径,然后附加到正在运行的进程,但执行没有停止在预期的位置。我在可用的源代码中添加了调试点,但它没有做任何更改,因为二进制文件是使用VS构建的。
n7taea2i1#
我们可以使用PDB文件和不完整的源代码在Visual Studio中调试正在运行的进程吗?你可以的
但需要注意的一点是,用于调试的源文件必须与用于构建二进制文件的源文件版本相同,PDB文件必须与二进制文件完全匹配。
解释这一点的官方文件:Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?例如,我在我这边创建了一个MFC Cpp文件,解决方案/项目的主要结构是:x1c 0d1x的数据在我构建解决方案/项目之后,将在解决方案目录下生成一个执行应用程序:
的您只需要像这样选择执行应用程序和相关的pdb(确保它们在同一目录中。这一步是为了确保当附加二进制文件.exe时,VS将能够找到相关的pdb文件。):
的之后,按照此官方文档使用附加流程功能来实现您的要求:Attach to running processes with the Visual Studio debugger的此时,即使我删除了所有其他cpp文件,我仍然能够在视图树中命中断点:
的
1条答案
按热度按时间n7taea2i1#
我们可以使用PDB文件和不完整的源代码在Visual Studio中调试正在运行的进程吗?
你可以的
但需要注意的一点是,用于调试的源文件必须与用于构建二进制文件的源文件版本相同,PDB文件必须与二进制文件完全匹配。
解释这一点的官方文件:
Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?
例如,我在我这边创建了一个MFC Cpp文件,解决方案/项目的主要结构是:
x1c 0d1x的数据
在我构建解决方案/项目之后,将在解决方案目录下生成一个执行应用程序:
的
您只需要像这样选择执行应用程序和相关的pdb(确保它们在同一目录中。这一步是为了确保当附加二进制文件.exe时,VS将能够找到相关的pdb文件。):
的
之后,按照此官方文档使用附加流程功能来实现您的要求:
Attach to running processes with the Visual Studio debugger的
此时,即使我删除了所有其他cpp文件,我仍然能够在视图树中命中断点:
的