Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 7069|回复: 10

WinCE无法调试

[复制链接]

该用户从未签到

发表于 2015-1-9 12:01:00 | 显示全部楼层 |阅读模式
有个使用Lazarus进行WinCE应用程序调试的问题想咨询下各位高手。在说明问题前,我说下我的开发环境:
计算机操作系统:Win 8.1旗舰版
WinCE开发板:OK335xS-II,CPU:AM3354,内存:128MB DDRIII,FLASH:256MB,触摸屏
WinCE版本:6.0
Lazarus版本:1.2.4,FPC版本:2.6.4
Lazarus版本:1.2.6,FPC版本:2.6.4
CodeTyphon版本:4.8,FPC版本:2.6.4
CodeTyphon版本:5.1,FPC版本:2.7.1

问题是这样的:
    我使用Lazarus和CodeTyphon各写了个简单的应用程序,按照《LAZARUS 实战宝典》中介绍的方法,将其编译成WinCE程序,直接拷贝到开发板中可以正常运行。

    由于今后实际应用需要用到开发板的SDK,需要联机调试,为此我想试一下Lazarus调试WinCE的能力,于是仍按照《LAZARUS 实战宝典》中介绍的方法,将从Lazarus官网下载的gdb-6.4-win32-arm-wince解压到指定位置,并在IDE中把调试GDB配置为arm-wince-gdb.exe,然后开始调试。结果等了一段时间后,开发机上弹出GDB错误对话框,提示“lost synchronization with host attempting GetThreadContext data. Error 10038”错误,点OK按钮后关闭对话框,应用程序可以正常运行,但IDE中无法调试。我检查了开发板上已经生成了一个文件夹gdb,下面有一个wince-stub.exe和我要调试的应用程序。我偿试双击wince-stub.exe文件运行,结果报相似的错误,错误信息为“lost synchronization with host attempting Dispatch. Error 10054”。
    为了检查是否是Lazarus的问题,我在IDE中复位了GDB,停止了调试,然后以管理员权限打开Windows命令行工具cmd.exe,以命令行方式运行arm-wince-gdb.exe文件,具体命令如下:
    arm-wince-gdb.exe --tui DebugMe.exe
    上面的DebugMe.exe是我的测试程序名称,我将它(包括工程文件等包含调试信息的源文件,以便调试)拷贝到与arm-wince-gdb.exe文件所在的文件夹下
    进入gdb调试命令行后,输入:r ,然后回车,命令行显示以下信息:
    <gdb> r
    Starting program: g:\Tools\Borland\Lazarus\gdb/debugme.exe
    Connectig to remote device...
   Starting on device: "\gdb\wince-stub.exe "
   Accepting connection...
   然后就等在这里,同时,开发板上也出现了前面描述的GDB错误对话框,点OK后,命令行窗口显示:
   lost synchronization with target attempting GetThreadContext context

   基本上就是上面提到的问题了,如果有高手知道解决的方法,在下不胜感激!
回复

使用道具 举报

该用户从未签到

发表于 2015-1-9 12:34:24 | 显示全部楼层
WIN8没有用过
gdb-6.4-win32-arm-wince
意思是Win32环境下的,楼主确认WIN8是32位的?
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-9 13:03:22 | 显示全部楼层
这个我也怀疑过。我的系统确实是64位的
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-9 13:04:09 | 显示全部楼层
我再找个WIN64测试看看
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-9 17:54:41 | 显示全部楼层
我记起来去年上半年的一段时间里自己在VMWARE中的WINXP上也这样测试过,当时没通过,只是因为那时不急着用,所以也没太在意。刚刚重新在WinXP中进行了相同的测试,结果还是一样,报相同的错误,所以我觉得可能不是64位系统的原因。另外,我也偿试用仿真器来测试,结果也不行,一运行调试,IDE中直接就提示Debugger Error,显示一个对话框,说什么“Ooops, the debugger entered the error state ”,说明可能由于缺少调试信息导致调试器找不到应用程序的PID。在win8.1下情形也相同。
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-9 17:58:05 | 显示全部楼层
补充一句,VMWARE中的调试方法参考了《LAZARUS实战宝典》和http://blog.csdn.net/love3s/article/details/6859788中的方法。
个人非常看好Lazarus的未来,希望有大侠能提点一下,在此先谢过了!
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-9 18:01:17 | 显示全部楼层
顺便提一句,利用仿真器来模拟测试的方法参考了《LAZARUS实战宝典》和博文http://blog.csdn.net/love3s/article/details/6859788中提到的方法。
个人觉得Lazarus前景不错,希望有大侠能帮忙解决这个问题,在此先谢过了!
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-12 09:48:56 | 显示全部楼层
前天查了下Lazarus官网中有关Lazarus问题的讨论,发现也有人有类似的疑问,有的人是通过设置Debbuger的Addtional search path来解决这个问题的。于是我也将Tools\Options\Debugger\General下的GNU debugger (gdb)设为Wince下的gdb,同时将Additional search path设为E:\(这个“\”必须要,另外只要是硬盘根目录就行,一开始我设为应用程序所在目录,结果调试时IDE报\Demo\Test\main.pp文件找不到),然后在WinXP下使用仿真器测试仿真器中运行的是中文Wince 6.0,结果可以从Lazarus IDE v1.2.6中调试运行在仿真器中的应用程序,尽管有点慢,但毕竟看到了希望。于是我又断开仿真器,连接上真实的运行Wince 6.0的开发机,同样在Winxp下进入调试,这次仍然出现前面帖子中描述的问题。这就有点奇怪了,写的软件非常简单,就一个窗口加一个按钮,没有用到任何硬件相关的资源。真心希望有高手能给指点一下!
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2015-1-12 11:14:29 | 显示全部楼层
刚刚我换了一块开发板,使用周立功的EasyARM283开发板,运行WinCE6.0中文版,仍然在WinXP下调试。一开始也是不行,提示无法进入调试,可能是缺少调试信息。我查看了一下开发板中生成的gdb文件夹中的文件,发现只有wince-stub.exe,而我要调试的应用程序并没有传过来。于是我自己从winxp中copy,结果提示我内存不足。打开控制面板,运行“系统”,切换到“内存”页,发现“存储内存”只有1MB多点,而我程序内存还比较多。由于调试时,GDB是将应用程序和服务端的wince-stub.exe两个文件放到RAM中进行的,于是我将存储内存调大点(为了调试,我的应用程序编译下来要14MB多点,我将存储内存调到16MB),再拷贝应用程序到GDB文件夹下,运行IDE进行调试,结果就OK了,我在应用程序的CreateForm事件中加断点,程序启动后就进入断点了,在按钮单击事件中加断点也能正常进入。

小小地兴奋了一下,想着既然这个板子可以调试,那飞凌的那个板子应该也可以吧。于是再换回OK335XS-II开发板,其它配置没变化,先看了下内存配置,存储内存有38MB,足够了,再调试,居然还是那个有问题的现象。偿试着调整了一下内存大小,始终还是不行。这下子还真是不知道从何处解决这个问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2015-4-9 09:28:59 | 显示全部楼层
本帖最后由 逍遥派掌门人 于 2015-4-9 09:33 编辑

Lazarus 生成的带调试信息的文件比较大,要装入RAM运行的话,则必须有充足的RAM。
在PC端用模拟器来调试,成功率比较高,因为PC的资源是比较丰富的;WINCE的资源是非常的少,有的时候可能会无法运行调试的程序。

你只是调整了“存储内存”,它仅是一个系统的留出的一个框架而已,而实际的内存占用才是关注的重点,看看“存储内存”减去实际内存占用后,还剩下多少。

每个开发板的BSP都不一样;在运行Lazarus的程序之前,资源的占用等情况也不一样。
回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-2 10:30 , Processed in 0.032886 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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