2010-10-19 1 views
1

J'ai un problème avec gdb, il ne s'arrêtait pas dans une fonction. Pouvez-vous expliquer pourquoi et comment arrêter le programme après avoir appelé strcpy?comment configurer le point d'arrêt dans gdb avec la fonction de bibliothèque partagée

[email protected]:~/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 
[email protected]:~/poligon$ 

Répondre

7

Vous utilisez peut-être __builtin_strcpy de gcc. Compiler avec gcc -fno-builtin et voir si cela aide.

Pour plus d'informations, voir: http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/C-Dialect-Options.html#C-Dialect-Options

+0

oui, il aide - compilateur change strcpy dans memcpy à des fins d'optimisation à l'aide des commutateurs de gcc empêche -fno-builtin de telles se comportent – user480162

+0

@ user480162: gcc utilisera automatiquement '__builtin_strcpy' dans certains cas plutôt que d'appeler la bibliothèque standard 'strcpy' sauf si vous compilez avec' -fno-builtin'. Utilisez 'gcc -S' pour voir ce qui est généré dans votre cas. –

Questions connexes