对象函数调用时的GDB中断

GDB break on object function call

本文关键字:GDB 中断 函数调用 对象      更新时间:2023-10-16

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

这很简单。您可以使用像b A::a if (this==0x28ff1e)这样的命令

this参数只能是类本身中包含的方法。因此,您应该只需要为您正在查看的类的所有方法设置断点。我不确定是否有一个简单的方法来做到这一点。

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

这意味着您想要中断对象已实例化的特定类的每个成员函数。

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

您可以使用gdb在myclass_implementation.cpp内部的每个函数上应用断点:

rbreak myclass_implementation.cpp:.

假设你想在一些特定的函数上设置断点,比如以Get开头的getter函数,那么你可以使用gdb来应用这样的断点:

rbreak myclass_implementation.cpp:Get*