gdb:只有当调用者函数不等于一定的值时才有条件地中断函数

在我的项目中,我有my_malloc(),将调用malloc()。

我喜欢在gdb中设置条件断点,这样只有当malloc()的调用者函数不等于my_mallc()时,gdb才会分解成“gdb>”。

可能吗?

目标是直接调用所有正在调用malloc()的代码,并且不通过my_malloc()。

我喜欢在gdb中设置条件断点,以便只有当malloc()的调用者函数不等于my_mallc()时,gdb才会分解为“gdb>”。

换句话说,当你不想被my_malloc调用的时候,你想在malloc my_malloc

一种方法是设置三个断点:一个在malloc ,一个在my_malloc入口,一个在my_malloc返回。 然后(假设断点分别是1,2和3)。

 (gdb) commands 2 silent # don't announce hitting breakpoint #2 disable 1 # don't stop when malloc is called within my_malloc continue # continue execution when BP#2 is hit end (gdb) commands 3 silent enable 1 # re-enable malloc breakpoint continue end 

此技术仅适用于单线程应用程序。