2

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.

2

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.

2

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 at 9:05

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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