gdb:仅当调用函数不等于某个值时才有条件地中断函数

tk.*_*lee 7 c linux gdb

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

我喜欢在gdb中设置条件断点,这样只有当malloc()的调用函数不等于my_mallc()时,gdb才会进入"gdb>".

可能吗?

目标是识别所有直接调用malloc()的代码,而不是通过my_malloc().

Emp*_*ian 5

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

换句话说,您希望在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
Run Code Online (Sandbox Code Playgroud)

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