How to set a breakpoint on imported Win32 function?

Luis Machado
Thu Jan 16 14:54:00 GMT 2020

On 1/15/20 7:42 PM, Ruslan Kabatsayev wrote:
> Hello,
> I have a program without any debug info, which has an import table
> with some functions imported by name. E.g. kernel32!ExitProcess is
> imported, and the debugger should know its name and address.
> But whenever I run GDB (from mingw-w64) with my test exe and try to
> set breakpoint on ExitProcess, GDB complains that no symbol table is
> loaded and asks if I want it set on future library load. After I agree
> and let the debuggee run, the debuggee exits without any trap
> (although it does exit via this exact function).
> OTOH, on Linux I can set a breakpoint on e.g. exit, which gets located
> in /lib/i386-linux-gnu/ for which I don't have any debug
> symbols, and the breakpoint successfully traps.
> So, how can I set a breakpoint on an imported function in Windows? Or
> is the handling of PE import table to fill GDB's symbol table not
> implemented?
> Thanks,
> Ruslan

Given what you described, i think GDB doesn't know how to properly 
locate that symbol. Can you at least see the symbol somewhere, in 
disassemble output for example?

More information about the Gdb mailing list