CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Linux/Unix社区 >  程序开发区

Fedora Core 3 下gdb调试问题

楼主bluerockey(李)2006-03-08 09:29:16 在 Linux/Unix社区 / 程序开发区 提问

test.c源程序如下:  
   
  #include   <stdio.h>  
  void   my_print(char   *string);  
  void   my_print2(char   *string);  
   
  main()  
  {  
  char   my_string[]   =   "hello   there";  
  my_print(my_string);  
  my_print2(my_string);  
   
  }  
   
  void   my_print(char*   string)  
  {  
  printf("The   string   is   %s\n",   string);  
  }  
   
  void   my_print2(char*   string)  
  {  
  char   *   string2;  
  int   size,   i;  
   
  size   =   strlen(string);  
  string2   =   (char*)malloc(size+1);  
  for(i   =   0;   i   <   size;   i++)  
  {  
  string2[size-i]   =   string[i];  
  }  
  string2[size   +   1]   =   '\0';  
  printf("The   string   printed   backward   is   %s\n",   string2);  
   
  }  
   
  在debug时总不成功,过程如下:  
  ////////////////////////////////////////////////////////////////  
   
  [root@localhost   rockey]#   gcc   -g   -o   test   test.c  
  [root@localhost   rockey]#   gdb   test  
  GNU   gdb   Red   Hat   Linux   (6.1post-1.20040607.41rh)  
  Copyright   2004   Free   Software   Foundation,   Inc.  
  GDB   is   free   software,   covered   by   the   GNU   General   Public   License,   and   you   are  
  welcome   to   change   it   and/or   distribute   copies   of   it   under   certain   conditions.  
  Type   "show   copying"   to   see   the   conditions.  
  There   is   absolutely   no   warranty   for   GDB.     Type   "show   warranty"   for   details.  
  This   GDB   was   configured   as   "i386-redhat-linux-gnu"...Using   host   libthread_db  
  library   "/lib/tls/libthread_db.so.1".  
   
  (gdb)   l  
  1               #include   <stdio.h>  
  2               void   my_print(char   *string);  
  3               void   my_print2(char   *string);  
  4  
  5               main()  
  6               {  
  7                               char   my_string[]   =   "hello   there";  
  8                               my_print(my_string);  
  9                               my_print2(my_string);  
  10  
  (gdb)  
  11             }  
  12  
  13             void   my_print(char*   string)  
  14             {  
  15                             printf("The   string   is   %s\n",   string);  
  16             }  
  17  
  18             void   my_print2(char*   string)  
  19             {  
  20                             char   *   string2;  
  (gdb)  
  21                             int   size,   i;  
  22  
  23                             size   =   strlen(string);  
  24                             string2   =   (char*)malloc(size+1);  
  25                             for(i   =   0;   i   <   size;   i++)  
  26                             {  
  27                                             string2[size-i]   =   string[i];  
  28                             }  
  29                             string2[size   +   1]   =   '\0';  
  30                             printf("The   string   printed   backward   is   %s\n",   string2);  
  (gdb)  
  31  
  32             }  
  (gdb)   break   27  
  Breakpoint   1   at   0x804847c:   file   test.c,   line   27.  
  (gdb)   r  
  Starting   program:   /usr/rockey/test  
  The   string   is   hello   there  
   
  Breakpoint   1,   my_print2   (string=0xfeee0db0   "hello   there")   at   test.c:27  
  27                                             string2[size-i]   =   string[i];  
  (gdb)   watch   string2[size-i]  
  Hardware   watchpoint   2:   string2[size   -   i]  
  (gdb)   next  
  warning:   Could   not   remove   hardware   watchpoint   2.  
  Warning:  
  Could   not   insert   hardware   watchpoint   2.  
  Could   not   insert   hardware   breakpoints:  
  You   may   have   requested   too   many   hardware   breakpoints/watchpoints.  
   
   
  //////////////////////////////////////////////  
  到这个地方就出现错误,请问是怎么回事呢?  
  问题点数:30、回复次数:3Top

1 楼fierygnu(va_list)回复于 2006-03-08 09:57:36 得分 15

关闭hardware   watchpoint  
  set   can-use-hw-watchpoints   0  
  Top

2 楼bluerockey(李)回复于 2006-03-08 10:47:10 得分 0

是不是每次调试程序都要关掉?这样有点麻烦。  
  有没有一个方法关掉下次也可以继续用  
  如果关掉有什么坏处吗?Top

3 楼fierygnu(va_list)回复于 2006-03-08 11:02:14 得分 15

在$HOME/.gdbinit里设置。直接写入该命令即可。  
  关了之后有watch点时性能下降。Top

相关问题

  • 关于gdb的调试
  • gdb调试的问题??
  • 关于gdb调试(break)
  • 用gdb同时调试两个文件
  • 如何在gdb调试多线程?
  • 用gdb调试strcat()时的问题
  • 使用gdb进行C程序调试!
  • 如何使用GDB 调试STL代码?
  • Linux下的调试程序哪个比较好?GDB怎么样?
  • 大虾,怎么用gdb调试多进程程序啊?

关键词

  • gdb
  • print
  • char
  • size

得分解答快速导航

  • 帖主:bluerockey
  • fierygnu
  • fierygnu

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo