3

All the answers I see on Google are about how to load PDB files from online servers. But I have an exe I'm debugging. It's my own exe. Only reason I want to debug it, is so that I can step through what happens when it makes some calls to user32.dll and beyond.

My EXE was made with c#, in Visual Studio, it's and x64 and "debug" build, with "full" pdb output. So the PDB is right there in the same folder, same name as the exe, and right next to the exe.

But when I load the EXE into IDA, it doesn't load the PDB. Instead, it tries to load a different 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

I don't know what this "apphost.pdb" is, and that folder name of "D:\workspace...etc" is definitely not on my computer, there is no such folders or anything similar. I don't even have a drive D. My exe is named Resolution_dev.exe, and the correct pdb is Resolution_dev.pdb. So I don't know why it's trying to find apphost.pdb.

But furthermore, as you can see in the debug output, it is [autohidden] and automatically answers the question with "-> No" at the end. So it doesn't even ask me the question, and automatically skips the PDB load.

And I can't find anywhere in the toolbar along the top of IDA, where it will let me manually load the PDB from a file. And as I said, all the info I found on Google is about loading pdb's from online servers. I can't find anything about how to simply load one from the drive.

3 Answers 3

4

Either put the PDB in the same folder as the executable, or use File->Load file->PDB file (after opening the .EXE in IDA) to load the PDB from whatever path you like on the disk.

3

To load a PDB for your own DLL, as already mentioned, use File -> Load file -> PDB file.

To load a PDB for a Microsoft DLL from the public PDB server:

  1. Set _NT_SYMBOL_PATH environment variable as described on MSDN.
    For example, to srv*C:\symbols*https://msdl.microsoft.com/download/symbols
    Create C:\symbols,
    Restart IDA.

  2. In IDA, Go to File -> Load file -> PDB file, then select your binary (EXE/DLL) file where the PDB is expected. IDA will automatically download, cache and use the corresponding PDB file.

1
  • Option 1 is always worth setting, especially if one wants caching in a specific location or separate remote PDBs from those created for own software ... and of course for tools like IDA or Process Explorer, making use of DIA. Good answer!
    – 0xC0000022L
    Nov 2, 2021 at 9:05
0

As others have mentioned, File → Load file → PDB file dialog works if you want to load the PDB after initial analysis. However, I was trying to load the PDB before it and ran into the same problem with the dialog being autohidden.

To fix it, you need to select Window → Reset hidden messages. This option is greyed out unless there is a disassembly currently loaded. After that, you can start disassembling your file again and PDB selection dialog will appear normally.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.