【发布时间】:2014-03-30 05:17:48
【问题描述】:
代码示例(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(红帽 4.1.2-52)
- gdb:GNU gdb (GDB) Red Hat Enterprise Linux (7.0.1-42.el5)
请告诉我哪里出错了!!
【问题讨论】:
-
找到malloc所在的行,在GDB里面输入break line_number
-
我在调用 malloc 的行号处设置了一个断点,它似乎运行良好。
-
这里(Fedora 20,gcc-4.8.2)它询问我是否在加载库时启用断点,并且工作正常。
-
也许它被优化了?试试 -O0