为什么 windbg 会在不同的路径中搜索转储文件和 exe 文件?

Why does windbg search different paths for dump and exe file?

当我在 WinDbg 中打开转储文件时,它会在 c:\code\appV1 文件夹

中查找 pdb 文件

当我直接在 WinDbg 中打开 exe 文件时,它会在 c:\code\appV2 文件夹中查找 pdb 文件。

这让我发疯,因为在这两种情况下,windbg 正在调试位于 c:\MyApp\app.exe

的同一个 exe

c:code\appV1 在其中搜索有意义,这是 exe 生成 pdb 文件的路径,但为什么它在 c:\code\appV2 中搜索,它与转储文件或exe?

我对此进行了广泛的挖掘,创建了一个演示项目并模拟了崩溃并尝试了各种组合。答案是当涉及到默认搜索路径 (pdb) 时,转储文件似乎对可执行文件具有压倒一切的影响。

重现此场景的方法如下:

  1. 在 c:\code\App1 处创建名为 App1 的项目并构建它。
  2. 复制上面的项目并将主文件夹重命名为 App1Clone 并构建它,比如在 c:\code\App1Clone

现在先把App1复制到c:\test文件夹然后运行。它会崩溃并创建转储文件。

现在将 App1 从 App1Clone 文件夹复制到 c:\test 文件夹并 运行 它。它会崩溃并创建转储文件。

现在两个转储文件都链接到 c:\test\app1.exe,但如果存在错误的 app1.exe(=搜索路径不匹配),它显然会选择应该存储在中的路径转储文件。我不知道转储文件是否甚至存储了这个路径,但根据我的实验,这似乎是这种情况。