我使 C++ 应用程序与 WinDbg 一起使用,并故意添加访问冲突运行时错误。
应用程序被编译为发布版本,然后我将 exe 从发布文件夹复制到桌面。仍然当我使用 WinDbg 并且应用程序崩溃时,它会打开我的源代码文件,并突出显示错误行。
我无法理解 WinDbg 如何理解我的源代码文件路径。
此外,当我从客户端获得故障转储时,可能是因为我没有可用的源代码。所以我想模拟真实世界的场景。
问候
最佳答案
按照我的理解,Visual Studio 编译器会为它创建的任何可执行文件生成一个 .pdb 文件(当设置了 /DEBUG
标志时)。此 PDB(程序数据库)文件包含调试器将二进制模块中的地址与源代码匹配所需的信息(包括源文件的路径)。似乎 .pdb 的路径被硬编码到二进制文件中。因此,当您移动二进制文件本身时,调试器仍然可以找到 pdb,并从中找到源代码。
所有路径都可能是绝对路径,并且只适用于编译二进制文件的 PC。
关于c++ - WinDbg 是如何认识源码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421056/