LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 712|回复: 6

gdb调试C程序出问题

[复制链接]
发表于 2003-7-25 19:07:40 | 显示全部楼层 |阅读模式
用了一个很简单的测试程序

/* greeting.c */
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;
        string2[size+1]='\0';
        printf("The String printed backward is %s \n",string2);
}

可是调试的时候出来这样的错误:
[root@BillingServer 3]# gdb greeting
GNU gdb Red Hat Linux (5.3post-0.20021129.18rh)
Copyright 2003 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"...
(gdb) file greeting
Reading symbols from greeting...done.

上面还是对的,可是下面可就出错了
(gdb) list
1       ../sysdeps/i386/elf/start.S: 没有那个文件或目录.
        in ../sysdeps/i386/elf/start.S
list命令不是列举出程序的意思吗?!搞不懂为什么了,痛苦?!

注明一下:我是按照这个帖子进行测试的
http://www.lslnet.com/linux/docs/linux-2725.htm
 楼主| 发表于 2003-7-25 19:26:31 | 显示全部楼层
up
 楼主| 发表于 2003-7-25 19:44:14 | 显示全部楼层
没好心人吗?呜呜呜……
发表于 2003-7-25 21:52:14 | 显示全部楼层
先用gcc -g greeting.c,然后再用gdb a.out调试。
 楼主| 发表于 2003-7-26 08:38:00 | 显示全部楼层
先用gcc -g greeting.c,然后再用gdb a.out调试。

果然OK,list命令可以运行,不知是何缘故造成这个错误呢,难道不能指定文件输出名吗?
发表于 2003-7-26 08:59:34 | 显示全部楼层
文件名可以随意指定,担编译时如果不加-g,则编译的二进制代码中没有调试信息,就无法用gdb调试。以后调试时要用gcc -g来编译程序。
 楼主| 发表于 2003-7-26 17:07:41 | 显示全部楼层
也就是说
gcc -g greeting greeting.c
然后
gdb  greeting
明白了,嘿嘿,谢谢版主
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表