olympics 发表于 2009-3-2 23:31

关于LINUX。谢谢了

1&nbsp;用虚拟机装LINUX要什么硬件配置跑起来不会慢(集成显卡的主板,1G以上的内存可以不可以?)<br />2&nbsp;电脑主板没串口,用什么方法弄个串口最接近主板本身带的串口?(以前有个类似的帖子,还没找到)&nbsp;转的串口在有虚拟机时要不要装LINXU的驱动?虚拟机下如何使用转的串口?<br />我用的虚拟机是VMWARE

goosen 发表于 2009-3-3 08:34

re

1)建议内存1G及以上,那样会好许多,对显卡没要求<br />2)可以配置使用主机串口。

olympics 发表于 2009-3-3 16:46

22

zzfff 发表于 2009-3-4 16:38

同上

也在想这个问题。

宇宙飞船 发表于 2009-3-4 17:06

俺还是比较落后的,没用过虚拟机串口,

也想知道效果。

armecos 发表于 2009-3-4 18:28

这里有虚拟机串口,

我用它做ecos在PC上的开发,Linux也能用,免驱动。《ecos增值包》里全包括了,不用到处找了。<br /><br />********************************<br />*&nbsp;手把手教你使用GDB调试ARM开发板&nbsp;*<br />********************************<br />&nbsp;&nbsp;&nbsp;&nbsp;2008/12/21&nbsp;&nbsp;asdjf@163.com&nbsp;&nbsp;www.armecos.com<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;很多《ecos增值包》用户对于使用GDB调试EasyARM2200/SmartARM2200之类的ARM开发板非常感兴趣,但总是遇到各种障碍,可能原来的文档说明过于简单,现在把详细操作步骤总结如下,手把手地教会你GDB调试。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;《ecos增值包》里提供了现成的稳定环境,所有gcc、gdb、insight等程序都是已经被证明可以正常工作的,一切由于编译,开发工具版本不匹配,安装不完全等等原因引起的低级错误均不存在,在这个前提下,我们详细讨论GDB调试步骤。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;具体内容如下:<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;GDB调试原理<br />&nbsp;&nbsp;&nbsp;&nbsp;串口GDB配置<br />&nbsp;&nbsp;&nbsp;&nbsp;网络GDB配置<br />&nbsp;&nbsp;&nbsp;&nbsp;一个简单的命令行调试范例<br />&nbsp;&nbsp;&nbsp;&nbsp;串口insight配置<br />&nbsp;&nbsp;&nbsp;&nbsp;网络insight配置<br />&nbsp;&nbsp;&nbsp;&nbsp;一个简单的图形化调试范例<br />&nbsp;&nbsp;&nbsp;&nbsp;在虚拟机上使用GDB调试(VmWare&nbsp;+&nbsp;cygwin&nbsp;+&nbsp;gdb/insight)<br />&nbsp;&nbsp;&nbsp;&nbsp;GDB命令使用说明<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;我们先讲GDB调试原理,再讲最简单的命令行和图形化调试,包括配置和调试范例。考虑到ARM开发板资源有限,我们特意提供了PC机上虚拟调试的解决方案(仅限企业定制版用户),你可以先在PC机上虚拟调试,等调试差不多时再迁移到开发板上,好处是PC机调试速度特别快,资源丰富,无须添加其他设备,一台PC机足矣。最后,给出一个GDB常用命令总结,&nbsp;&nbsp;&nbsp;&nbsp;不求全面,但求实用,更详细的使用方法可以通过GDB自带的help命令或者上网搜索得到。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;GDB调试原理&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;略<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;串口GDB配置&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />在cygwin命令行输入arm-elf-gdb&nbsp;a.out<br />(gdb)&nbsp;set&nbsp;remotebaud&nbsp;115200<br />(gdb)&nbsp;target&nbsp;remote&nbsp;COM1<br />Remote&nbsp;debugging&nbsp;using&nbsp;COM1<br />0x80007704&nbsp;in&nbsp;??&nbsp;()<br />(gdb)&nbsp;load<br />(gdb)&nbsp;list<br />(gdb)&nbsp;c<br />可以通过串口0调试a.out程序,注意:因为串口0已经用于GDB调试目的,所以被调试程序不能使用串口0,否则会发生冲突。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;网络GDB配置&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />在cygwin命令行输入arm-elf-gdb&nbsp;a.out<br />(gdb)&nbsp;target&nbsp;remote&nbsp;192.168.0.6:9000<br />Remote&nbsp;debugging&nbsp;using&nbsp;192.168.0.6:9000<br />0x80007704&nbsp;in&nbsp;??&nbsp;()<br />(gdb)&nbsp;load<br />Loading&nbsp;section&nbsp;.rom_vectors,&nbsp;size&nbsp;0x40&nbsp;lma&nbsp;0x81010000<br />Loading&nbsp;section&nbsp;.text,&nbsp;size&nbsp;0x14774&nbsp;lma&nbsp;0x81010040<br />Loading&nbsp;section&nbsp;.rodata,&nbsp;size&nbsp;0x3c0&nbsp;lma&nbsp;0x810247b4<br />Loading&nbsp;section&nbsp;.data,&nbsp;size&nbsp;0x6a4&nbsp;lma&nbsp;0x81024b74<br />Start&nbsp;address&nbsp;0x81010040,&nbsp;load&nbsp;size&nbsp;86552<br />Transfer&nbsp;rate:&nbsp;62946&nbsp;bits/sec,&nbsp;298&nbsp;bytes/write.<br />(gdb)&nbsp;list<br />(gdb)&nbsp;c<br />通过网口GDB调试a.out允许被调试程序使用串口0,因为不会冲突嘛!当你同时打开超级终端,就可以看到串口的输出信息。<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;-------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;一个简单的命令行调试范例&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;-------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;比如调试如下程序片段,taska是demo1.c文件里的一个函数,a.out是编译后的文件。<br />......<br /><br />void&nbsp;taska(cyg_addrword_t&nbsp;data)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;message&nbsp;=&nbsp;(int)&nbsp;data;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        AAAAAA111111&nbsp;is&nbsp;active.thread&nbsp;data&nbsp;is&nbsp;%d.
&quot;,message);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;j&nbsp;+&nbsp;10;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cyg_thread_delay(300);<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />}<br /><br />......<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在cygwin命令行输入:<br />$&nbsp;arm-elf-gdb&nbsp;a.out<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;设置GDB参数并加载被调试程序<br />(gdb)&nbsp;target&nbsp;remote&nbsp;192.168.0.6:9000<br />(gdb)&nbsp;load<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在taska函数处设置断点<br />(gdb)&nbsp;break&nbsp;demo1.c:taska<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;继续运行,遇到断点重新回到GDB命令行界面<br />(gdb)&nbsp;c<br />Continuing.<br /><br />Breakpoint&nbsp;1,&nbsp;taska&nbsp;(data=1)&nbsp;at&nbsp;demo1.c:11<br />11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;message&nbsp;=&nbsp;(int)&nbsp;data;<br />Current&nbsp;language:&nbsp;&nbsp;auto;&nbsp;currently&nbsp;c<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;使用list命令列出断点附近的源程序<br />(gdb)&nbsp;list<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />6&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;cyg_thread&nbsp;thread_data;<br />7&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;static&nbsp;cyg_handle_t&nbsp;thread_handle;<br />8<br />9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;taska(cyg_addrword_t&nbsp;data)<br />10&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />11&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;message&nbsp;=&nbsp;(int)&nbsp;data;<br />12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0;<br />13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j&nbsp;=&nbsp;0;<br />14<br />15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;按回车继续上一个命令,即:再执行一次list命令,接着列出后面的源程序<br />(gdb)<br />16&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        AAAAAA111111&nbsp;is&nbsp;active.thread&nbsp;data&nbsp;is&nbsp;%d.
&quot;,message);<br /><br />18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1;<br />19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;j&nbsp;+&nbsp;10;<br />20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cyg_thread_delay(300);<br />21&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />22&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />23<br />24&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;void&nbsp;taskb(cyg_addrword_t&nbsp;data)<br />25&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;使用n命令,单步调试,不进入函数内部<br />(gdb)&nbsp;n<br />12&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i&nbsp;=&nbsp;0;<br />(gdb)&nbsp;n<br />13&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;j&nbsp;=&nbsp;0;<br />(gdb)&nbsp;n<br />17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        AAAAAA111111&nbsp;is&nbsp;active.thread&nbsp;data&nbsp;is&nbsp;%d.
&quot;,message);<br />(gdb)&nbsp;n<br />18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1;<br />(gdb)&nbsp;n<br />19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;j&nbsp;+&nbsp;10;<br />(gdb)&nbsp;n<br />20&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cyg_thread_delay(300);<br />(gdb)&nbsp;n<br />15&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;for(;;)<br />(gdb)&nbsp;n<br />17&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;        AAAAAA111111&nbsp;is&nbsp;active.thread&nbsp;data&nbsp;is&nbsp;%d.
&quot;,message);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;还可以使用display命令显示局部变量值,以后每次执行单步调试都会显示这个变量的值<br />(gdb)&nbsp;display&nbsp;i<br />1:&nbsp;i&nbsp;=&nbsp;2<br />(gdb)&nbsp;n<br />18&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i&nbsp;=&nbsp;i&nbsp;+&nbsp;1;<br />1:&nbsp;i&nbsp;=&nbsp;2<br />(gdb)&nbsp;n<br />19&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j&nbsp;=&nbsp;j&nbsp;+&nbsp;10;<br />1:&nbsp;i&nbsp;=&nbsp;3<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;如果出错,可以使用where命令了解出错位置附近的程序情况。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;串口insight配置&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;使用arm-elf-insight&nbsp;a.out进入图形调试界面。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在File&nbsp;-&gt&nbsp;targe&nbsp;settings...里设置<br />&nbsp;&nbsp;&nbsp;&nbsp;Connection<br />&nbsp;&nbsp;&nbsp;&nbsp;Target:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Remote/Serial<br />&nbsp;&nbsp;&nbsp;&nbsp;Baud&nbsp;Rate:&nbsp;&nbsp;115200<br />&nbsp;&nbsp;&nbsp;&nbsp;Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;com1<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;网络insight配置&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;使用arm-elf-insight&nbsp;a.out进入图形调试界面。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;在File&nbsp;-&gt&nbsp;targe&nbsp;settings...里设置<br />&nbsp;&nbsp;&nbsp;&nbsp;Connection<br />&nbsp;&nbsp;&nbsp;&nbsp;Target:&nbsp;&nbsp;&nbsp;&nbsp;Remote/TCP<br />&nbsp;&nbsp;&nbsp;&nbsp;Hostname:&nbsp;&nbsp;172.168.0.6<br />&nbsp;&nbsp;&nbsp;&nbsp;Port:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;9000<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;一个简单的图形化调试范例&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;--------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;还是使用上面的程序例子,只不过换成图形化调试界面。<br />&nbsp;&nbsp;&nbsp;&nbsp;如下图所示,图形化调试无须**烦琐的命令,方便设置/查看各种信息,大大方便了用户的使用。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;在虚拟机上使用GDB调试(VmWare&nbsp;+&nbsp;cygwin&nbsp;+&nbsp;gdb/insight)&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------------------------------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;使用虚拟机的好处是:无须额外添加硬件,仅在一台PC机上就可以搭建出ecos系统的GDB调试环境,速度快、成本低。支持键盘、屏幕,网卡,串口等设备。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;虚拟串口设置,使用VSPD软件虚拟一对直联串口COM3和COM4,COM3接VmWare虚拟机串口2,COM4接超级终端。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic1.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;设置启动盘,在VmWare的Floppy设备中指定使用redboot.flp软盘映像启动。这个redboot版本支持虚拟机的键盘、屏幕,网卡,串口,可以用i386-elf-gdb调试程序,无须硬件开发板。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic2.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;VmWare串口设置,VmWare缺省不支持串口,需要自行添加。建议添加两个串口设备,其中将串口2指向我们前面用VSPD软件虚拟出来的COM3。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic3.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;启动redboot。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic4.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;进入demo1.c图形调试界面,高亮条停止在断点处,鼠标停靠在变量上会自动显示出其值(如message=1),很方便。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic5.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;C与汇编混合显示模式MIXED,可以单步调试汇编码。可以用于学习C编译器是怎么把C语句编成汇编码的。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic6.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;除了用鼠标即时取变量值外,也可以通过局部变量窗口读/修改变量值。可以很清晰地显示复杂的类变量。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic7.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;将超级终端设置在虚拟串口COM4上,这样,VmWare从虚拟串口COM3上发送的信息就可以输出到超级终端上,不用额外添加硬件设备,一台PC全搞定。单步运行程序就可以在超级终端看到效果,直接修改寄存器、内存、变量等,可以看到程序执行发生相应变化。<br />&nbsp;&nbsp;&nbsp;&nbsp;<img src="http://www.armecos.com/pic21ic/gdb/gdbpic8.gif"><br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;|&nbsp;GDB命令使用说明&nbsp;|<br />&nbsp;&nbsp;&nbsp;&nbsp;------------------<br />&nbsp;&nbsp;&nbsp;&nbsp;略,可以上网搜索详细说明。<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;好啦,现在你就可以用最低成本调试RAM里的应用程序了(即使你只有一台PC机)。GDB(Insight)能够让你深入程序细节,随心所欲地调试程序。本解决方案特别适合低成本开发ecos程序。ecos与硬件无关,你基于ecos开发的应用程序可以不加改变地平滑移植到新的CPU处理器平台上,保值增值您的软件投资。

olympics 发表于 2009-3-5 18:24

dddddddddddddddddddddddd

页: [1]
查看完整版本: 关于LINUX。谢谢了