免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3859 | 回复: 7
打印 上一主题 下一主题

gdb调试问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-29 20:14 |只看该作者 |倒序浏览

  1. $ g++ -g -o stock stock.cc
  2. $ gdb stock
  3. 。。。。。省略提示信息。。。。。。

  4. (gdb) break 3
  5. Breakpoint 1 at 0x1132: file stock.cc, line 3.
  6. (gdb) run
  7. Starting program: /work/IR/autologin/4test/stock
  8. Warning:
  9. Cannot insert breakpoint 1.
  10. Error accessing memory address 0x1132: Input/output error.
复制代码

错误如上,怎么回事?
谢谢

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
2 [报告]
发表于 2007-04-29 20:50 |只看该作者
原帖由 yjmwolf 于 2007-4-29 20:14 发表于 1楼  

$ g++ -g -o stock stock.cc
$ gdb stock
。。。。。省略提示信息。。。。。。

(gdb) break 3
Breakpoint 1 at 0x1132: file stock.cc, line 3.
(gdb) run
Starting program: /work/IR/autologin/4te ...

方便的话把你的代码贴上来。

论坛徽章:
0
3 [报告]
发表于 2007-04-29 20:54 |只看该作者
原帖由 MMMIX 于 2007-4-29 20:50 发表于 2楼  

方便的话把你的代码贴上来。

这是c++ 标准库里面的例子
gdb错误不止出现在这个程序中,几乎所有的程序gdb调试都会出现这个问题
而且是g++ -g -o.....................编译的

  1. // cont/mapl.cpp
  2. #include <iostream>
  3. #include <map>
  4. #include <string>
  5. using namespace std;
  6. int main()
  7. {
  8. /*create map/associative array
  9. *-keys are strings
  10. *-values are floats
  11. */
  12. typedef map<string,string> StringFloatMap;
  13. StringFloatMap stocks; // create empty container
  14. //insert some elements
  15. stocks["BASF"] = "369.50";
  16. stocks["VW"] = "413.50";
  17. stocks["Daimler"] = "819.00";
  18. stocks["BMW"] = "834.00";
  19. stocks["Siemens"] = "842.20";
  20. //print all elements
  21. StringFloatMap::iterator pos;
  22. for (pos = stocks.begin(); pos != stocks.end(); ++pos) {
  23. cout << "stock: " << pos->first << "\t"
  24. << "price: " << pos->second << endl;
  25. }
  26. cout << endl;
  27. stocks["Volkswagen"] = stocks["VW"];
  28. stocks.erase("VW");
  29. //print all elements
  30. for (pos = stocks.begin(); pos != stocks.end(); ++pos) {
  31. cout << "stock: " << pos->first << "\t"
  32. << "price: " << pos->second << endl;
  33. }
  34. }
复制代码

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
4 [报告]
发表于 2007-04-29 21:18 |只看该作者
原帖由 yjmwolf 于 2007-4-29 20:54 发表于 3楼  

这是c++ 标准库里面的例子
gdb错误不止出现在这个程序中,几乎所有的程序gdb调试都会出现这个问题
而且是g++ -g -o.....................编译的

// cont/mapl.cpp
#include <iostream>
#include ...

我试验了一下,没什么问题。
$ g++ -g t1.cpp
lee@debian:/tmp
$ gdb ./a.out
GNU gdb 6.3-debian
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-linux"...Using host libthread_db library "/lib/tls/i686/cmov/libthread_db.so.1".

(gdb) b 3
Breakpoint 1 at 0x8048f78: file t1.cpp, line 3.
(gdb) r
Starting program: /tmp/a.out

Breakpoint 1, main () at t1.cpp:6
6        {


系统环境:
gcc version 3.4.4 20050314 (prerelease) (Debian 3.4.3-13sarge1)
Linux debian 2.6.7-1-686 #1 Thu Jul 8 05:36:53 EDT 2004 i686 GNU/Linux

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
5 [报告]
发表于 2007-04-29 21:20 |只看该作者
另外,我觉得你编译出的可执行文件有问题,因为在 gdb 中执行 b 3 时 gdb 返回的地址是 0x1132。

论坛徽章:
0
6 [报告]
发表于 2007-05-09 10:57 |只看该作者
我估计是gdb的问题
因为所有的程序在我机器上用gdb调试
都会出现同样的错误
(gdb) run
Starting program: /work/IR/autologin/4test/a.out
Warning:
Cannot insert breakpoint 1.
Error accessing memory address 0x1132: Input/output error.

我的环境:
gentoo 2006.1 kernel- 2.6.20-morph9
i686 Intel(R) Celeron(R) CPU 2.66GHz GenuineIntel
gcc version 3.4.6 (Gentoo 3.4.6-r2, ssp-3.4.6-1.0, pie-8.7.10)
GNU gdb 6.6

论坛徽章:
0
7 [报告]
发表于 2007-05-09 11:00 |只看该作者

回复 #6 yjmwolf 的帖子

找到原因了
是gdb与gcc版本不匹配的问题
gdb6.6与gcc4.1匹配
与gcc3.4不能匹配

论坛徽章:
95
程序设计版块每日发帖之星
日期:2015-09-05 06:20:00程序设计版块每日发帖之星
日期:2015-09-17 06:20:00程序设计版块每日发帖之星
日期:2015-09-18 06:20:002015亚冠之阿尔艾因
日期:2015-09-18 10:35:08月度论坛发贴之星
日期:2015-09-30 22:25:002015亚冠之阿尔沙巴布
日期:2015-10-03 08:57:39程序设计版块每日发帖之星
日期:2015-10-05 06:20:00每日论坛发贴之星
日期:2015-10-05 06:20:002015年亚冠纪念徽章
日期:2015-10-06 10:06:482015亚冠之塔什干棉农
日期:2015-10-19 19:43:35程序设计版块每日发帖之星
日期:2015-10-21 06:20:00每日论坛发贴之星
日期:2015-09-14 06:20:00
8 [报告]
发表于 2007-05-09 13:01 |只看该作者
原帖由 yjmwolf 于 2007-5-9 11:00 发表于 7楼  
找到原因了
是gdb与gcc版本不匹配的问题
gdb6.6与gcc4.1匹配
与gcc3.4不能匹配

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP