无法在malloc()处设置断点

时间:2014-02-27 01:35:32

标签: c linux gcc gdb malloc

代码示例(foo.c)

int main(){
 int *x=(int*)malloc(sizeof(int));  // break here
 *x=10;
 free(x);
 return 0;
}

我想在malloc打破。这是我尝试的:

# gcc -g foo.c -o bar
# gdb bar
(gdb) b main
Breakpoint 1 at 0x80484cf: file src.c, line 7.
(gdb) r
Breakpoint 1, main () at src.c:7
(gdb) b malloc
Breakpoint 2 at 0x550944
(gdb) c
Program exited normally.

我的系统规格是:

  • 操作系统:CentOS 5.5
  • gcc:gcc(GCC)4.1.2 20080704(Red Hat 4.1.2-52)
  • gdb:GNU gdb(GDB)红帽企业Linux(7.0.1-42.el5)

请告诉我我哪里错了!!

2 个答案:

答案 0 :(得分:4)

我无法可靠地重现错误,但在Linux上,您可以尝试在__libc_malloc而不是malloc进行分解。

答案 1 :(得分:0)

<强>解决
弄清楚了, 实际上断点是在ld-linux.so而不是libc.so中设置的,可以使用以下方法解决:

  • b __malloc
  • b __libc_malloc

感谢您的关注!

虽然一个新问题是: 如何让gdb只在特定的库中设置断点(我知道它可以用于文件)!!