GDB中断对象函数调用

时间:2011-09-30 23:59:24

标签: c++ gdb

我正在调试一个问题,我想打破每个具有特定对象的方法调用作为'this'参数。这在GDB中是否可行?

3 个答案:

答案 0 :(得分:6)

这很容易。您可以使用b A::a if (this==0x28ff1e)等命令。

答案 1 :(得分:0)

this参数应该只是类本身包含的方法。所以你应该只需要为你正在查看的类的所有方法设置断点。我不确定有一种简单的方法可以做到这一点。

答案 2 :(得分:0)

  

我想打破每个具有特定对象的方法调用作为'this'参数

这意味着您希望打破已实例化对象的特定类的每个成员函数。

为方便起见,我们假设所有成员函数都是在特定的cpp文件中定义的,例如myclass_implementation.cpp

您可以使用gdb以myclass_implementation.cpp方式对rbreak myclass_implementation.cpp:. 内的每个函数应用断点:

rbreak myclass_implementation.cpp:Get*

假设你想打破一些特定的函数,比如以Get开头的getter函数,那么你可以使用gdb以这种方式应用断点:

{{1}}