我在谷歌上看到的所有答案都是关于如何从在线服务器加载 PDB 文件的。但是我有一个正在调试的 exe。这是我自己的exe。我想调试它的唯一原因是,当它对 user32.dll 进行一些调用时,我可以逐步了解发生的情况。
我的 EXE 是用 c# 制作的,在 Visual Studio 中,它是 x64 和“调试”版本,带有“完整”pdb 输出。所以 PDB 就在同一个文件夹中,与 exe 同名,紧挨着 exe。
但是当我将 EXE 加载到 IDA 时,它不会加载 PDB。相反,它会尝试加载不同的 PDB:
[autohidden] The input file was linked with debug information
and the symbol filename is:
"D:\workspace\_work\1\s\artifacts\obj\win-x64.Release\corehost\cli\apphost\standalone\Release\apphost.pdb"
Do you want to look for this file at the specified path
and the Microsoft Symbol Server?
-> No
我不知道这个“apphost.pdb”是什么,“D:\workspace...etc”这个文件夹名肯定不在我的电脑上,没有这样的文件夹或类似的东西。我什至没有驱动器 D。我的 exe 名为 Resolution_dev.exe,正确的 pdb 是 Resolution_dev.pdb。所以我不知道它为什么要寻找 apphost.pdb。
但此外,正如您在调试输出中看到的那样,它是 [autohidden] 并在末尾自动以“-> 否”回答问题。所以它甚至不问我这个问题,并自动跳过 PDB 负载。
而且我在 IDA 顶部的工具栏中找不到任何地方,它可以让我从文件中手动加载 PDB。正如我所说,我在谷歌上找到的所有信息都是关于从在线服务器加载 pdb 的。我找不到任何关于如何简单地从驱动器加载一个的信息。