为什么windbg搜索dump和exe文件的不同路径?

时间:2016-08-08 19:04:07

标签: c++ windbg

当我在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没有任何关系?

1 个答案:

答案 0 :(得分:0)

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

以下是重现此方案的方法:

  1. 在c:\ code \ App1中创建名为App1的项目并构建它。
  2. 复制上面的项目并将主文件夹重命名为App1Clone并构建它,比如c:\ code \ App1Clone
  3. 现在首先将App1复制到c:\ test文件夹并运行它。它将崩溃并创建转储文件。

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

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