如何使用共享库函数在gdb中设置断点

时间:2010-10-19 07:32:38

标签: gdb

我有gdb的问题,它没有在一个函数中停止。你能解释为什么以及如何在调用strcpy后停止程序?

grzes@trampek:~/poligon$ gdb ./char_array2 
GNU gdb (GDB) 7.2
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i686-pc-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /home/grzes/poligon/char_array2...done.
(gdb) list
1    #include <stdio.h>
2    #include <string.h>
3    
4    int main() {
5       char str_a[20];
6       printf("ssss");
7       strcpy(str_a, "Hello, world!\n");
8       printf(str_a); 
9    }
10    
(gdb) break main
Breakpoint 1 at 0x8048465: file char_array2.c, line 4.
(gdb) run
Starting program: /home/grzes/poligon/char_array2 

Breakpoint 1, main () at char_array2.c:4
4    int main() {
(gdb) break strcpy
Breakpoint 2 at 0x1a1205
(gdb) cont
Continuing.
ssssHello, world!

Program exited with code 016.
(gdb) q
grzes@trampek:~/poligon$ 

1 个答案:

答案 0 :(得分:7)

您可能正在使用gcc的__builtin_strcpy。使用gcc -fno-builtin进行编译,看看是否有帮助。

有关详细信息,请参阅:http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/C-Dialect-Options.html#C-Dialect-Options