为什么 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) 时,转储文件似乎对可执行文件具有压倒一切的影响。
重现此场景的方法如下:
- 在 c:\code\App1 处创建名为 App1 的项目并构建它。
- 复制上面的项目并将主文件夹重命名为 App1Clone 并构建它,比如在 c:\code\App1Clone
现在先把App1复制到c:\test文件夹然后运行。它会崩溃并创建转储文件。
现在将 App1 从 App1Clone 文件夹复制到 c:\test 文件夹并 运行 它。它会崩溃并创建转储文件。
现在两个转储文件都链接到 c:\test\app1.exe,但如果存在错误的 app1.exe(=搜索路径不匹配),它显然会选择应该存储在中的路径转储文件。我不知道转储文件是否甚至存储了这个路径,但根据我的实验,这似乎是这种情况。
当我在 WinDbg 中打开转储文件时,它会在 c:\code\appV1
文件夹
当我直接在 WinDbg 中打开 exe 文件时,它会在 c:\code\appV2
文件夹中查找 pdb 文件。
这让我发疯,因为在这两种情况下,windbg 正在调试位于 c:\MyApp\app.exe
的同一个 exec:code\appV1
在其中搜索有意义,这是 exe 生成 pdb 文件的路径,但为什么它在 c:\code\appV2
中搜索,它与转储文件或exe?
我对此进行了广泛的挖掘,创建了一个演示项目并模拟了崩溃并尝试了各种组合。答案是当涉及到默认搜索路径 (pdb) 时,转储文件似乎对可执行文件具有压倒一切的影响。
重现此场景的方法如下:
- 在 c:\code\App1 处创建名为 App1 的项目并构建它。
- 复制上面的项目并将主文件夹重命名为 App1Clone 并构建它,比如在 c:\code\App1Clone
现在先把App1复制到c:\test文件夹然后运行。它会崩溃并创建转储文件。
现在将 App1 从 App1Clone 文件夹复制到 c:\test 文件夹并 运行 它。它会崩溃并创建转储文件。
现在两个转储文件都链接到 c:\test\app1.exe,但如果存在错误的 app1.exe(=搜索路径不匹配),它显然会选择应该存储在中的路径转储文件。我不知道转储文件是否甚至存储了这个路径,但根据我的实验,这似乎是这种情况。