C++ 为类成员函数设置断点未成功

C++ 为类成员函数设置断点未成功,c++,gdb,C++,Gdb,我有一门课看起来像这样: namespace madoka { class polarizable_sites { public: void resize(const size_t dim_); void clear(void); }; } 在gdb中,我可以通过清除设置断点 b 'madoka::polarizable_sites::clear()' 但是,对于成员函数resize b 'madoka::polarizable_sites::resize(const size_t)' 不

我有一门课看起来像这样:

namespace madoka
{
class polarizable_sites
{
public:
void resize(const size_t dim_);
void clear(void);
};
}
在gdb中,我可以通过清除设置断点

b 'madoka::polarizable_sites::clear()'
但是,对于成员函数resize

b 'madoka::polarizable_sites::resize(const size_t)'
不起作用。GDB报告的错误:

类madoka::Polariable_sites没有任何名为 调整大小(常量大小)提示:重试 “madoka::极化站点::调整大小(常数大小)”或 'madoka::极化站点::调整大小(常数大小)' 单引号。)

我想知道为什么,因为函数样式是由TAB自动完成的

顺便说一句:我用的是GDB

GNU gdb(Ubuntu/Linaro 7.2-1ubuntu11)7.2版权所有(C)2010免费 软件基金会 使用编译器的

g++(Ubuntu/Linaro 4.5.2-8ubuntu4)4.5.2 版权所有(C)2010免费软件基金会
我猜编译器已经去掉了常量说明符


试试b'madoka::Polariable_sites::resize(size_t)

可能函数是内联的。如果是GDB语法中的x86代码,请尝试添加
\uuu asm int 3
,然后遍历代码。这个技巧在调试MSVC x86代码时为我节省了很多时间。

您可以始终使用file:linenumber。@很好,使用函数名会更好,因为如果我更改源代码,行号可能会更改,并且会有点难以跟踪。我知道这一点,如果启用了优化,这只是一个解决方法,编译器可能会自动内联函数。试着用
-O0-ggdb
重新编译这是gcc,不需要破解;)这可能适用于GCC
asm(“int$0x3”)请记住,此断点将在中编译,仅当您无法中断内联或其他优化代码时才应使用。它将导致代码更改,并可以显示/隐藏海森堡。