在GDB中设置断点

And*_*Dev 6 gdb breakpoints

我有一个返回指针的函数:

static void*find_fit(size_t asize);

我想在gdb中设置一个断点,但是当我输入这个函数名时,我得到以下错误之一:

break*find_fit函数"*find_fit"未定义

要么

break find_fit函数"find_fit"未定义

我可以轻松地在返回指针以外的函数的函数上设置断点,但是当函数确实返回指针时,gdb似乎不想在它上面打破.

有谁看到发生了什么?谢谢!

smp*_*kes 4

听起来由于某种原因,gdb 无法正确处理 C++ 名称修饰。通常,您无需接触任何东西即可使其发挥作用。你可以试试show language。通常它被设置为auto。您也可以尝试使用 手动设置set language c++

要测试,您只需输入

b 'find<tab>
Run Code Online (Sandbox Code Playgroud)

(这是制表符,而不是字符“ <tab>”),它应该尝试为您自动完成函数的名称。在 C++ 中,您需要参数类型来了解该函数,但这并不 100% 符合您所看到的,因为如果您为 gdb 提供一个不带参数的函数名称,它通常会做正确的事情或提示您执行哪个操作您想要的功能的版本。你没有看到其中任何一个。