I’m debugging a small Cygwin-based program with WinDbg (live debugging), and WinDbg refuses to load symbols for my executable. In the module list it only shows:
ModLoad: 00000001`00400000 00000001`00419000 .exe
So the module name is literally just .exe, and no symbols for hello_world.exe ever load. Symbols for cygwin1.dll load fine.
If I use Time Travel Debugging (TTD) with the same binary and DLLs, WinDbg shows the proper name and symbols work:
ModLoad: 00000001`00400000 00000001`00419000 hello_world.exe
ModLoad: 00007ff9`xxxx0000 00007ff9`xxxxe000 cygwin1.dll
bp hello_world!main
I tried putting the executable and cygwin1.dll both in a WSL path and on a normal C: path, but WinDbg behaves the same in both cases. I have double checked the source and symbol paths .
I'm compiling the program with Cygwin's GCC toolchain. What’s confusing is that WinDbg is able to load the symbols correctly when using TTD, but during live debugging it treats the module as just “.exe” and doesn’t load any symbols at all.
GCC is unable to produce debugging information in the PDB format. I am not sure why you get any success at all with TTD to be honest. You should either use gdb or switch to a toolchain that actually works with the Windows ecosystem. MSVC and Clang are your usual options. However that probably doesn’t help you if you are stuck with cygwin for some reason.
!lmi output in case of TTD
Module: hello_world
Base Address: 0000000100400000
Image Name: hello_world.exe
Machine Type: 34404 (X64)
Time Stamp: 68efdcac Wed Oct 15 23:11:00 2025
Size: 19000
CheckSum: 1fd92
Characteristics: 26
Debug Data Dirs: Type Size VA Pointer
CODEVIEW 19, 401c, 141c RSDS - GUID: {C7121DA2-FCD2-96E5-43E2-7127FDF66134}
Age: 1, Pdb:
Image Type: FILE - Image read successfully from debugger.
hello_world.exe
Symbol Type: PDB - No error - symbol load deferred from image path.
C:\ProgramData\Dbg\sym\hello_world.exe\68EFDCAC19000\hello_world.exe
Load Report: no symbols loaded
C:\ProgramData\Dbg\sym\hello_world.exe\68EFDCAC19000\hello_world.exe
This is the !lmi output in case of live debugging
Loaded Module Info: [00000001`00400000]
Module:
Base Address: 0000000100400000
Image Name: .exe
Machine Type: 34404 (X64)
Time Stamp: 68efdcac Wed Oct 15 23:11:00 2025
Size: 19000
CheckSum: 1fd92
Characteristics: 26
Debug Data Dirs: Type Size VA Pointer
CODEVIEW 19, 401c, 141c RSDS - GUID: {C7121DA2-FCD2-96E5-43E2-7127FDF66134}
Age: 1, Pdb:
Image Type: FILE - Image read successfully from debugger.
C:\Users\MCW\Downloads\test\hello_world.exe
Symbol Type: NONE - No error - symbol load deferred from image path.
Load Report: no symbols loaded
For you reference i have added the !lmi output of TTD and live debugging respectively .Yes I have the necessity to debug executables compiled with Cygwin toolchain .
Well I’ll be damned, binutils actually added some PDB support throughout 2022, my understanding was outdated. Depending on how complete it is what @raj_r suggested here may work.