📄 gdbserver调试遇到的问题3
字号:
</td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post">建议:
<br>1)把你的程序先在板子上跑一下,看是否可以运行。或者用gcc编译,看是否可以在host端运行。
<br>2)你的流程是完全正确的。在这个过程中只用到开发板的IP地址。若使用TCP连接,
<br> target:
<br> target> gdbserver host:port myapp
<br> 其中host可以省略的。开发板的IP地址。
<br>
<br> host:
<br> 启动相应的gdb,
<br> 然后(gdb) target remote host:port
<br> 其中host仍然是开发板的IP地址。
<br> <p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=516370&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post516627"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=hitgyh&Number=516627&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">hitgyh</a><br><span class="small">(stranger)<br> 04-09-30 12:09<br></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%><img src="http://www.linuxforum.net/forum/images/newicons/blush.gif" width="15" height="15"> <b>Re: 你就按我说的做吧, 没错.</b> <img alt="新" src="http://www.linuxforum.net/forum/images/new.gif"> <font class="small">[<a href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=516370&page=1&view=collapsed&sb=9&o=&vc=1" target="_new">re: vivianinsun</a>]</font></td><td align="right" width=30%> </td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post">我还是详细讲一下我的情况比较好。
<br>我的应用程序:foo.c的内容:
<br>#include <stdlib.h>
<br>#include <stdio.h>
<br>main ()
<br>{
<br> printf("Hello world! This is my first app. From WangZF,2002/11/04\n");
<br>}
<br>Makefile的内容:
<br>EXEC=foo
<br>OBJS=foo.o
<br>all:$(EXEC)
<br>$(EXEC):$(OBJS)
<br> $(CC) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)
<br>romfs:
<br> $(ROMFSINST) /bin/$(EXEC)
<br>clean:
<br> rm -f $(EXEC) *.elf *.gdb *.o
<br>由于我装的是:arm-elf-tools-20030314.sh
<br>装的时候我直接运行的:./arm-elf-tools-20030314.sh
<br>我想它默认的就该是arm-elf-gcc和arm-elf-gdb吧
<br>所以我的Makefile中的CC我想就默认为arm-elf-gcc吧
<br>然后:
<br>[root@gyh foo]# make
<br>cc -c -o foo.o foo.c
<br>cc -o foo foo.o
<br>[root@gyh foo]# ./foo
<br>Hello world! This is my first app. From WangZF,2002/11/04
<br>我把foo编译到uclinux内核,运行uclinux后执行:
<br>ls bin
<br>arp date foo init mv sh umount
<br>basename dd ftp kill ping telnet uptime
<br>boa df ftpd lash portmap telnetd version
<br>busybox dmesg gdbserver ln ps tftp
<br>cat du getty ls pwd tftpd
<br>chmod echo hostname mkdir rm tinylogin
<br>clear env ifconfig mknod rmdir tip
<br>cp expand inetd mount route touch
<br>cd /bin
<br>/bin> ./foo
<br>Hello world! This is my first app. From WangZF,2002/11/04
<br>由上可见我的程序在uclinux下是可以执行的,
<br>但是用gdbserver的时候出现我楼顶的问题。
<br>
<br>然而,我又做了个工作却使我迷茫了,我直接将我的程序mount到uclinux,如下:
<br>/> portmap &
<br>[27]
<br>/> cd var
<br>/var> ls
<br>config lock log run tmp
<br>/var> ls tmp
<br>/var> mount -t nfs 192.168.0.11:/root/gyh/uClinux-dist/user/foo tmp
<br>/var> cd tmp
<br>/var/tmp> ls
<br>Makefile foo foo.c foo.gdb foo.o
<br>于是看见了我宿主机上的foo程序文件夹里的东西
<br>此时执行:
<br>/var/tmp> ./foo
<br>./foo: Unknown error 13
<br>从这个角度来讲好像是我程序有问题,居然不能在uclinux下运行,但能在宿主机上运行
<br>但为什么按照上面的方法编译到内核能够运行呢?
<br>于是我又做了个工作,使我觉得好像真的是arm-elf-gcc的问题,工作如下:
<br>先删除foo,foo.gdb,foo.o,只留下foo.c和Makefile
<br>不用Makefile,直接执行:
<br>[root@gyh foo]# arm-elf-gcc -o foo foo.c
<br>/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o): In function `__do_global_ctors':
<br>__main.o(.text+0xc4): undefined reference to `__CTOR_LIST__'
<br>/usr/local/lib/gcc-lib/arm-elf/2.95.3/libgcc.a(__main.o)(.data+0x0): undefined reference to `__DTOR_LIST__'
<br>collect2: ld returned 1 exit status
<br>根本就不行,但我用make却可以,难道make里的CC不是arm-elf-gcc
<br>
<br>希望有经验的热心的大虾能够帮忙分析分析,并提出解决的办法,
<br>谢谢先!
<br>
<br> <br><br><br>--------------------<br>世界因我而美丽<p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=516627&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post516673"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=hitgyh&Number=516673&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">hitgyh</a><br><span class="small">(stranger)<br> 04-09-30 15:46<br></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%><img src="http://www.linuxforum.net/forum/images/newicons/book.gif" width="15" height="15"> <b>Re: gdbserver调试遇到的问题</b> <img alt="新" src="http://www.linuxforum.net/forum/images/new.gif"> <font class="small">[<a href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=515267&page=1&view=collapsed&sb=9&o=&vc=1" target="_new">re: hitgyh</a>]</font></td><td align="right" width=30%> </td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post"> 看了一篇入门的文章,按照上面的做了,结果如下:
<br>[root@gyh foo]# arm-elf-gcc -w1 -elf2flt -o foo foo.c
<br>arm-elf-gcc: unrecognized option `-w1'
<br>[root@gyh foo]# arm-elf-gcc -W1 -elf2flt -o foo foo.c
<br>cc1: Invalid option `-W1'
<br>[root@gyh foo]# arm-elf-gcc -W1,-elf2flt -o foo foo.c
<br>cc1: Invalid option `-W1,-elf2flt'
<br>不知道-W1起什么作用,在这里不能用,不要-W1的话:
<br>[root@gyh foo]# arm-elf-gcc -elf2flt -o foo foo.c
<br>[root@gyh foo]# ls
<br>foo foo.c foo.gdb
<br>察看foo的格式:
<br>[root@gyh foo]# file foo
<br>foo: data
<br>并没有出现希望的信息
<br>想运行:
<br>[root@gyh foo]# ./foo
<br>bash: ./foo: cannot execute binary file
<br>可能只能在开发板上运行这种格式的吧,把foo文件夹mount到板子上后执行:
<br>/var/tmp> ls
<br>Makefile foo foo.c foo.gdb
<br>/var/tmp> ./foo
<br>./foo: Unknown error 13
<br>可见也不行,是不是应为最开始编译的时候没有要-W1的缘故呢?可是不能用
<br>呀。怎么回事? <br><br><br>--------------------<br>世界因我而美丽<p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=516673&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post516697"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=hitgyh&Number=516697&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">hitgyh</a><br><span class="small">(stranger)<br> 04-09-30 19:20<br></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%><img src="http://www.linuxforum.net/forum/images/newicons/book.gif" width="15" height="15"> <b>Re: gdbserver调试遇到的问题</b> <img alt="新" src="http://www.linuxforum.net/forum/images/new.gif"> <font class="small">[<a href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=516673&page=1&view=collapsed&sb=9&o=&vc=1" target="_new">re: hitgyh</a>]</font></td><td align="right" width=30%> </td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post">刚才编译成功了,但是mount到板子上运行不了:
<br>
<br>[root@gyh foo]# arm-elf-gcc -Wall -O2 -Wl, -elf2flt -o armfoo foo.c
<br>[root@gyh foo]# ls
<br>armfoo armfoo.gdb foo.c
<br>[root@gyh foo]# ./armfoo
<br>bash: ./armfoo: cannot execute binary file
<br>
<br>nfs mount到板子上的/var/tmp:
<br>/var> portmap &
<br>[29]
<br>/var> mount -t nfs 192.168.0.11:/root/gyh/uClinux-dist/user/foo /var/tmp
<br>/var> ls
<br>/var> cd tmp
<br>/var/tmp> ls
<br>Makefile armfoo armfoo.gdb foo.c
<br>
<br>运行:
<br>/var/tmp> ./armfoo
<br>./armfoo: Unknown error 13
<br>
<br>应该没有问题的,怎么回事呢?
<br>
<br>是不是运行不了,就gdbserver不了,反正我是没有搞通交叉调试环境。
<br> <br><br><br>--------------------<br>世界因我而美丽<p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=516697&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post517048"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=hitgyh&Number=517048&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">hitgyh</a><br><span class="small">(newbie)<br> 04-10-05 08:13<br></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%><img src="http://www.linuxforum.net/forum/images/newicons/book.gif" width="15" height="15"> <b>Re: gdbserver调试遇到的问题</b> <img alt="新" src="http://www.linuxforum.net/forum/images/new.gif"> <font class="small">[<a href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=516697&page=1&view=collapsed&sb=9&o=&vc=1" target="_new">re: hitgyh</a>]</font></td><td align="right" width=30%> </td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post">自己顶一个,要不然就沉了 <br><br><br>--------------------<br>世界因我而美丽<p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=517048&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post517691"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=cou&Number=517691&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">cou</a><br><span class="small">(journeyman)<br> 04-10-09 08:40<br><img width=65 height=75 src="http://photos.gznet.com/photos/1017383/1017383-7BwC!FBVmAVapRNgPHdL!qJ78iA!5Z.jpg"></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%><img src="http://www.linuxforum.net/forum/images/newicons/book.gif" width="15" height="15"> <b>Re: gdbserver调试遇到的问题</b> <img alt="新" src="http://www.linuxforum.net/forum/images/new.gif"> <font class="small">[<a href="http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=517048&page=1&view=collapsed&sb=9&o=&vc=1" target="_new">re: hitgyh</a>]</font></td><td align="right" width=30%> </td></tr></table></td></tr><tr><td width=83% class="lighttable"><br><P class="post">我也遇到和你一样的问题, 我曾经在网上搜索到一个文章,那人说是因为开发主机上存在一个自己的genromfs文件,和/usr/local/bin中的genromfs冲突了,要把其他在/usr/bin文件中的genromfs文件更改名字,
<br>但是我试过在我的开发主机上查找genromfs文件,在我的主机上只有/usr/local/bin上有,其他地方找不到!
<br>
<br>以下为文章的全文:
<br>
<br>Hi GF.W,
<br>
<br>The same problem puzzled me before.
<br>You can check your genromfs' version. If you use the binary tool-chain from
<br><a href="http://www.uclinux.org" target="_blank">www.uclinux.org</a>, and installed properly, you have the correct version. But
<br>make sure not any other genromfs in your path. Remove or rename the genromfs
<br>in /usr/bin/.
<br>
<br>Good Luck!
<br>F.Wang
<br>
<br>>
<br>>Hello All,
<br>> I useI a Lineo uCevolution board with uCdimm/MCF5272 (uClinux 2.0.38).However I have met some problems with compiling and debugging.
<br>>
<br>> 1) I have rebuilt the uClinux kernel and a root filesystem(I have make xconfig,make dep,make), but when I used ramloader image.bin on the target and tried to run it, it crashed mysteriously. The echo message is "Warning:unable to open an initial console". However, I do it again on another computer, and it runs properly. And I have already reinstall Redhat Linux and uClinux, and still can't work.
<br>>
<br>> 2) Following the Coldfire-HOWTO ,I try to debug an application remotely:
<br>> 1. On uClinux/ColdFire "gdbserver :3000 app"
<br>> 2. On host sytsem "gdb app.gdb"
<br>> 3. At gdb command prompt enter "target remote <IP>:3000"
<br>> But I fail.
<br>> The host shows the following message:
<br>> .....
<br>> warning: unknown architecture file may be incompatible with i386 target.
<br>> warning: big endian file does not match little endian target.
<br>> (gdb) target remoute 159.226.1.250:3000
<br>> Remote debugging using 159.226.1.250:3000
<br>> Couldn't establish connection to remote target
<br>> Reply contains invalid hex digit 59.
<br>> The target shows:
<br>> Remote debugging using :3000
<br>> readchar: Got EOF
<br>> Remote side has terminated connection. GDBserver will reopen the connection.
<br>>
<br>>
<br>> Anything wrong? Thanks.
<br>>
<br>>GF.Wu
<br>> <p class=small>文章选项:<a target="_blank" href="http://www.linuxforum.net/forum/printthread.php?Cat=&Board=embedded&main=517691&type=post"><img align=absmiddle alt="打印" src="http://www.linuxforum.net/forum/images/print.gif" border=0></a> </td></tr><tr><td rowspan=2 width="17%" valign=top class="darktable"><a name="Post517692"></a><a href="http://www.linuxforum.net/forum/showprofile.php?Cat=&User=cou&Number=517692&Board=embedded&what=showflat&page=1&view=collapsed&sb=9&o=&fpart=2&vc=1">cou</a><br><span class="small">(journeyman)<br> 04-10-09 08:42<br><img width=65 height=75 src="http://photos.gznet.com/photos/1017383/1017383-7BwC!FBVmAVapRNgPHdL!qJ78iA!5Z.jpg"></span></td><td width=83% class="subjecttable"> <table width=100% class="subjecttable" border=0><tr><td align=left width=70%>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -