背景
我的代码里只包含了HeapProfilerStart和HeapProfilerStop并没有调用HeapProfilerDump,但是还是会产生heapdump文件,我也不知道是怎么触发的

在 gdb 中给某个函数打上断点是一个常见的调试操作。以下是具体的步骤:
1. 启动 gdb 并加载程序
gdb <executable>
例如,如果你的可执行文件名为 my_program,你可以运行:
或者,如果你要附加到一个正在运行的进程,可以使用以下命令(替换
<PID>为实际进程 ID):gdb -p <PID>2. 设置断点
通过函数名设置断点
你可以直接使用函数的名称设置断点:
break <function_name>例如,如果你要在名为
my_function的函数处设置断点:break my_function如果你知道函数在源代码中的具体位置(文件名和行号),可以通过这种方式设置断点:
break <file_name>:<line_number>break main.cpp:42通过类的成员函数设置断点
对于 C++ 程序中的类成员函数,你可以使用以下格式:
例如,在
MyClass的成员函数doSomething上设置断点:break MyClass::doSomething3. 启动或继续程序
run如果程序已经在运行中,并且你使用
gdb -p <PID>附加到了进程,可以使用continue命令继续程序的执行:当程序运行到断点所在的地方时,
gdb会暂停执行,并返回到调试器提示符。4. 查看断点
info breakpoints5. 删除断点
如果你需要删除某个断点,可以使用以下命令,指定断点的编号(可以通过
info breakpoints获取):例如,删除编号为
1的断点:delete 16. 单步调试和其他调试操作
单步执行:
step逐行执行:
next查看调用栈:
backtrace打印变量值:
print <variable_name>
通过这些步骤,你可以有效地设置并使用断点来调试你的程序。
No comments yet.