当前位置: 技术问答>linux和unix
菜鸟问一菜鸟问题,关于gdb.给为高手帮帮忙吧:-)
来源: 互联网 发布时间:2015-07-10
本文导语: 我用gcc编译一"hello,world"小程序: #include int main() { printf("%srn","hello,world"); return 0; } 而后,gcc -g -o hello hello.c 产生可执行代码 随后 gdb hello (gdb)list (gdb)break 4 (gdb)run 问题来了,终端输出: starting program : ...
我用gcc编译一"hello,world"小程序:
#include
int main()
{
printf("%srn","hello,world");
return 0;
}
而后,gcc -g -o hello hello.c 产生可执行代码
随后 gdb hello
(gdb)list
(gdb)break 4
(gdb)run
问题来了,终端输出:
starting program : /root/program/hello
Error while mapping share library sections:
:success
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
就我看,好像也是这个问题使得KDevelop的断点调试也无法通过
请各位高手给指点一下吧,不胜感谢!!!!
#include
int main()
{
printf("%srn","hello,world");
return 0;
}
而后,gcc -g -o hello hello.c 产生可执行代码
随后 gdb hello
(gdb)list
(gdb)break 4
(gdb)run
问题来了,终端输出:
starting program : /root/program/hello
Error while mapping share library sections:
:success
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
Error while reading shared library symbols:
:No such file or directory
就我看,好像也是这个问题使得KDevelop的断点调试也无法通过
请各位高手给指点一下吧,不胜感谢!!!!
|
回复人: leebuilder(建筑者) ( ) 信誉:101 2004-7-21 16:22:03 得分: 0
编译的时候参数错误,应该这样:
gcc -g -o -c hello hello.c
你缺少编译选项 -c
试试吧
eEric(Paranoia) ( )
"gcc -g -o -c hello hello.c" 在我的系统上无法正常执行
"gcc -g -o hello hello.c" 倒是可以
========================================================
-c 表示只编译,没有链接成可执行文件,怎么执行呢
-o 表示要生成的目标文件,后面要跟目标文件名,当然不能执行了。
编译的时候参数错误,应该这样:
gcc -g -o -c hello hello.c
你缺少编译选项 -c
试试吧
eEric(Paranoia) ( )
"gcc -g -o -c hello hello.c" 在我的系统上无法正常执行
"gcc -g -o hello hello.c" 倒是可以
========================================================
-c 表示只编译,没有链接成可执行文件,怎么执行呢
-o 表示要生成的目标文件,后面要跟目标文件名,当然不能执行了。
|
用ddd+gdb
更好操作~~
更好操作~~
|
使用的动态库里面没有符号。。。
|
直接 ./hello 一下看看能不能运行……如果也说 No such file or directory 那么
ldd hello 看看它引用的库,是不是装得有问题
ldd hello 看看它引用的库,是不是装得有问题
|
gcc -c -o hello hello.c
书上说要用-c的,看看怎么样!
书上说要用-c的,看看怎么样!
|
我试了一下,没有出现你描述的问题啊,很正常的!
|
编译的时候参数错误,应该这样:
gcc -g -o -c hello hello.c
你缺少编译选项 -c
试试吧
gcc -g -o -c hello hello.c
你缺少编译选项 -c
试试吧
|
你的文件和操作没问题,应该是开发环境没安装好。
|
我用gdb调试一个有多个scanf("%d%d",&i,&j);时,也是出现严重问题,但是在运行时,一切ok
|
重装系统不至于……重新编译 glibc 估计也够要你命了:)
|
装了一个KDE(默认安装只装GNOME)这一步可能有问题。
你可以下载一个glibc包来重装库文件和头文件。
你可以下载一个glibc包来重装库文件和头文件。
|
我在redhat 9.0下面调试没有问题,
你用 ldd hello 看一下他依赖什么库,
如果是 libc.so.6 那么它用的是glibc的库。一般来说他是个链接。注意他后面的版本号
然后按你前面的方法启动调试,r 以后,用shareedlib看载入了哪些库尤其是上面依赖的
那几个有没有载入,如果没有,或者载入不正确就要自己手动载入
可以在开始运行的时候用-s参数指定,
我想主要是载入版本不正确,不然gdb不能正常启动
我没有用过fc 感觉redhat越来越烂,很多版本不合适,不能协同工作她就把它集成进去了,
你用 ldd hello 看一下他依赖什么库,
如果是 libc.so.6 那么它用的是glibc的库。一般来说他是个链接。注意他后面的版本号
然后按你前面的方法启动调试,r 以后,用shareedlib看载入了哪些库尤其是上面依赖的
那几个有没有载入,如果没有,或者载入不正确就要自己手动载入
可以在开始运行的时候用-s参数指定,
我想主要是载入版本不正确,不然gdb不能正常启动
我没有用过fc 感觉redhat越来越烂,很多版本不合适,不能协同工作她就把它集成进去了,
|
我想你的安装环境有问题,因为我当年也调试过这样的程序,但没有你的问题。
编译的时候,换个编译器g++(不用gcc)试试
g++ -g -o hello hello.c
编译的时候,换个编译器g++(不用gcc)试试
g++ -g -o hello hello.c
|
没有加载.c文件。
gdb时,当前目录下最好有程序的源文件。
这样可以自动加载。
当然也可以手动指定.c文件的目录。具体代码忘了。
gdb时,当前目录下最好有程序的源文件。
这样可以自动加载。
当然也可以手动指定.c文件的目录。具体代码忘了。
|
up
|
哈哈最好用c++builderx编写c程序他是一个ide比gccgdb好用多了。