【发布时间】:2016-06-18 18:47:46
【问题描述】:
在我的 c++ 程序上使用 GDB 时遇到问题。我想为我的类成员函数设置一个断点,但我不确定如何执行此操作的语法。我的程序现在正在运行,我只是想学习使用 GDB。我的问题是我在网上找到的所有信息实际上只涉及一个 main() 文件,没有其他函数或类,如果它们涉及类,它只使用带有 void return 语句的函数。
我有一个二叉搜索树类。我想在我的程序中的一个函数处设置一个断点。 这是我的头文件的部分。
class BST
{
BST()
...
private:
int add((BST * root, BST *src);
}
我正在远程登录到学校的命令行 linux 服务器。 我可以使用 g++ -g *.cpp 让 GDB 与我的程序一起正常运行(还有其他文件可以正常工作),并且文件保存为 a.out。 我运行 GDB 与
gdb ./a.out
然后我进入了 GDB。我可以使用
获得 void 显示功能的断点b BST::disp_block()
但是如何使用我尝试过的添加功能来做到这一点
b BST::int add(BST*, BST *)
b int BST::add(BST*, BST *)
b BST::add(BST*, BST *)
我什至尝试使用参数名称
b BST::int add(BST * root, BST * src)
b int BST::add(BST * root, BST * src)
b BST::add(BST * root, BST * src)
我不断收到错误
Function "____" not defined.
Make break point pending on future shared library load? (y or [n])
如何为这样的成员函数设置断点?我假设观察点的格式相同,如果不是,您也可以解释一下。
【问题讨论】:
-
在没有重载的情况下或者如果您想中断所有重载,
b BST::add。不需要争论。请注意,如果您的类在命名空间中,您也需要包含命名空间。 -
也可以通过 filename:linenumber 在 gdb 中设置断点。如果你的函数在 bst.c 中,在第 25 行,命令是:(gdb) b bst.c:25
标签: c++ gdb breakpoints member-functions