c++ - WinDbg 是如何认识源码的?

标签 c++ visual-studio-2010 debugging windbg crash-dumps

我使 C++ 应用程序与 WinDbg 一起使用,并故意添加访问冲突运行时错误。

应用程序被编译为发布版本,然后我将 exe 从发布文件夹复制到桌面。仍然当我使用 WinDbg 并且应用程序崩溃时,它会打开我的源代码文件,并突出显示错误行。

我无法理解 WinDbg 如何理解我的源代码文件路径。

此外,当我从客户端获得故障转储时,可能是因为我没有可用的源代码。所以我想模拟真实世界的场景。

问候

最佳答案

按照我的理解,Visual Studio 编译器会为它创建的任何可执行文件生成一个 .pdb 文件(当设置了 /DEBUG 标志时)。此 PDB(程序数据库)文件包含调试器将二进制模块中的地址与源代码匹配所需的信息(包括源文件的路径)。似乎 .pdb 的路径被硬编码到二进制文件中。因此,当您移动二进制文件本身时,调试器仍然可以找到 pdb,并从中找到源代码。

所有路径都可能是绝对路径,并且只适用于编译二进制文件的 PC。

关于c++ - WinDbg 是如何认识源码的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20421056/

相关文章:

C++ - Qt - Visual Studio 2010 - 具有图形用户界面和控制台的应用程序

debugging - Matlab 编译器输出可执行文件的不可重现的 exe 挂起

c - GDB:本地址越界时如何在$eax处找到 'passphrase'?

c++ - 与 'operator<<' 不匹配(操作数类型为 'std::ostream {aka std::basic_ostream<char>}'

c++ - 如何使用用户输入正确修改二维数组中的 char 数组元素?专门用于电影院座位

c++ - 构建 inkscape 时错误 : <ieeefp. h> 未找到

visual-studio-2010 - 如何在给定的内存地址处或附近找到符号? (使用 Visual Studio 2010)

asp.net - ASP.NET 4中.skin文件中的Intellisense

c++ - 是否可以在 C++11 中手动设置 istream 失败位

c# - 在 Visual Studio 调试器中以自定义顺序显示属性