求助:gdb调试core文件,加了-g参数,还是显示no debugging symbols found

sz_hiter 2010-11-22 02:51:38
如题。

1、在PC机上编写了测试程序。

#include <stdio.h>
#include <string.h>
int main()
{
char *p;

strcpy(p,"hello");
}

2、在PC机的linux下运行及gdb调试core正常。

[root@localhost test]# gcc -g -o test_kkk test_kkk.c
[root@localhost test]# ./test_kkk
段错误 (core dumped)
[root@localhost test]# gdb -c core.141
core.14188 core.14198
[root@localhost test]# gdb -c core.14198 test_kkk
GNU gdb 6.8
Copyright (C) 2008 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"...

warning: Can't read pathname for load map: Input/output error.
Reading symbols from /lib/libc.so.6...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.2...done.
Loaded symbols for /lib/ld-linux.so.2
Core was generated by `./test_kkk'.
Program terminated with signal 11, Segmentation fault.
[New process 14198]
#0 0x08048388 in main () at test_kkk.c:7
7 strcpy(p,"hello");
(gdb) bt
#0 0x08048388 in main () at test_kkk.c:7
(gdb)

3、将程序下载到硬件平台上后,gdb运行core如下。

arm-linux-gcc -g -o test_kkk test_kkk.c
./gdb -c core test_kkk
GNU gdb (GDB) 7.0
Copyright (C) 2009 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 "arm-linux".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /mnt/nand/fw/test_kkk...done.
Reading symbols from /lib/libc.so.6...(no debugging symbols found)...done.
Loaded symbols for /lib/libc.so.6
Reading symbols from /lib/ld-linux.so.3...(no debugging symbols found)...done.
Loaded symbols for /lib/ld-linux.so.3
Core was generated by `./test_kkk'.
Program terminated with signal 11, Segmentation fault.
#0 0x4009920c in memcpy () from /lib/libc.so.6
(gdb) bt
#0 0x4009920c in memcpy () from /lib/libc.so.6
#1 0x00000000 in ?? ()
(gdb)


4、为什么还是出现了no debugging symbols found,导致bt命令后,不能正常的显示错在哪一行。

补充说明:
1、gdb是交叉编译到板子上的,可以使用,strip和未strip都试过,结果一样。
2、板子上运行的linux的所有库文件都是交叉编译环境相同,strip和未strip都试过,结果一样。

我该怎么做????谢谢各位。
...全文
2321 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
sz_hiter 2010-11-25
  • 打赏
  • 举报
回复
顶起来求助。。。
sz_hiter 2010-11-24
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fancymouse 的回复:]
仔细看no debugging symbols found是在哪里的。是载入两个系统lib库的时候没有调试符号……这当然是没有的。乃自己的程序Read symbols不是正常done了么
然后,如果bt都不对的话很大的可能性是整个栈都被乃越界越得破坏掉了。只能先静态调试确定哪里出问题再说。
[/Quote]

感谢3楼和8楼的答复!

3楼说的不错,应该是栈坏了。

我想问下静态调试怎么调?

我目前的做法是:
1、在程序中添加dump函数,用backtrace函数和backtrace_symbols函数捕捉打印错误点(显示运行地址)
2、对源程序进行arm-linux-objdump反汇编,查找与之对应的运行地址,看是哪一行代码错误。

请教一下这样的做法对么?另外我用了这个方法之后,还是无法在反汇编中查找到指定地址,因为地址为0x03020304,似乎不是程序的运行地址。

望大侠们不吝指点!
mymtom 2010-11-23
  • 打赏
  • 举报
回复
可以试试访问NULL确定一下原因
char *p;
=>
char *p = 0;

[Quote=引用 3 楼 fancymouse 的回复:]

仔细看no debugging symbols found是在哪里的。是载入两个系统lib库的时候没有调试符号……这当然是没有的。乃自己的程序Read symbols不是正常done了么
然后,如果bt都不对的话很大的可能性是整个栈都被乃越界越得破坏掉了。只能先静态调试确定哪里出问题再说。
[/Quote]
sz_hiter 2010-11-22
  • 打赏
  • 举报
回复
高手来啊。。。
sz_hiter 2010-11-22
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 fancymouse 的回复:]
仔细看no debugging symbols found是在哪里的。是载入两个系统lib库的时候没有调试符号……这当然是没有的。乃自己的程序Read symbols不是正常done了么
然后,如果bt都不对的话很大的可能性是整个栈都被乃越界越得破坏掉了。只能先静态调试确定哪里出问题再说。
[/Quote]

其实这只是我的一个测试程序,实际上我是在gdb另外一个实际的程序,就是因为出现了no debugging symbols found的信息(编译时,确实添加了-g的),使得不能正常的定位到错误的地方,不过现象是和测试程序差不多的。
FancyMouse 2010-11-22
  • 打赏
  • 举报
回复
哦代码就是上面那个啊……那基本上就是栈脏掉然后memcpy最终触发了segfault。没啥好纠结的。
FancyMouse 2010-11-22
  • 打赏
  • 举报
回复
仔细看no debugging symbols found是在哪里的。是载入两个系统lib库的时候没有调试符号……这当然是没有的。乃自己的程序Read symbols不是正常done了么
然后,如果bt都不对的话很大的可能性是整个栈都被乃越界越得破坏掉了。只能先静态调试确定哪里出问题再说。
sz_hiter 2010-11-22
  • 打赏
  • 举报
回复
顶起来求助。。。
sz_hiter 2010-11-22
  • 打赏
  • 举报
回复
其实以前还用的好好的,不知道怎么回事,一段时间回来再用就不行了。。。

555555

23,121

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧