Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Setting a Breakpoint in GDB

I have a function that returns a pointer:

static void *find_fit(size_t asize);

I would like to set a breakpoint in gdb, but when I type this function name, I get one of these errors:

break *find_fit
Function "*find_fit" not defined

or

break find_fit
Function "find_fit" not defined

I can easily set break point on a function that returns something other than a pointer, but when the function does return a pointer, gdb doesn't seem to want to break on it.

Anybody see what is going on? Thanks!

like image 865
AndroidDev Avatar asked Dec 07 '11 03:12

AndroidDev


1 Answers

It sounds like for some reason, gdb isn't handling C++ name mangling correctly. Normally you don't have to touch anything for this to work. You can try show language. Typically it's set to auto. You can also try manually setting it with set language c++.

To test, you can just type

b 'find<tab>

(that's the tab character, not the characters "<tab>") and it should try to autocomplete the name of the function for you. In C++ you need the argument types to know the function, but that doesn't 100% fit with what you're seeing because if you give gdb a function name without arguments, it'll usually do the right thing or prompt you for which version of a function you want. You aren't seeing either of those.

like image 111
smparkes Avatar answered Oct 21 '22 03:10

smparkes