QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 2501|回复: 10

skyeye下运行sqlite3错误,Illegal instruction

[复制链接]
发表于 2008-8-10 15:51:01 | 显示全部楼层 |阅读模式
如题,我用的交叉编译工具是arm-linux-gcc-3.4.1
移植了内核linux-2.6.14,编译了skyeye-1.2.4_Rel,交叉编译了sqlite-3.6.1, 3.6.0, 3.5.9等诸多版本,
在skyeye下运行sqlite3,然后在sqlite的命令行下运行任何SQL语句均报错:Illegal instruction。跳出了sqlite命令行,跳出到skyeye的arm-linux的shell下。
我不知道是sqlite的问题,还是skyeye的问题。
无法在arm-linux下成功运行sqlite,我的项目就无法继续进行了,请大家帮忙啊。

我忙活了一天,用crosstool-0.43构建了一个交叉编译工具,gcc-4.1.1-glibc-2.3.2,重新交叉编译了sqlite3,还是不行。交叉编译工具、sqlite、skyeye全都换过了,都不行,该怎么办啊。

我在想,会不会是移植的linux内核的问题,我移植的是2.6.14,我是参照http://blog.chinaunix.net/u/25764/showart_620897.html中移植linux内核的部分移植的。我猜想是不是内核缺少什么东西呢?俺是新手,搞不清楚”Illegal instruction“这个提示会因为什么出现。用gdb调试skyeye下的sqlite3对我来说也是不可能的事,还是请高人帮忙啊。

没办法,我开始尝试gdb调试sqlite3,由于本人刚刚接触linux及其编程,还是搞不定,现将调试记录写出来,希望有人能指点一下。
调试sqlite3过程:
shell.c 1523行,执行.tables命令会直到这里
shell.c 1527行 opendb 到跳 955 行
shell.c 1529行 sqlite3_get_table 跳到 table.c 121行  gdb提示“Cannot find bounds of current function”无法单步调试
将断点设置在 shell.c:1551行后,错误出现,说明错误就是在1529行调用函数sqlite3_get_table过程中出现的。
sqlite3_get_table函数中142行调用了sqlite3_malloc,148行调用了sqlite3_exec,对这两个函数设置断点后,程序未停在断点处,而是直接出错,因此怀疑是否在142行调用sqlite3_malloc之前就出了错,但在这之前只有一些简单的赋值语句,不知为何会出错。由于这里不能单步,所以不知道具体在哪句出错了。
设置 sqlite3_exec 函数为断点时,运行.tables命令未到断点处就出错,运行“select * from sqlite_master;”语句则运行到断点处,再继续时才出错。
注:在gdb里只能看到shell.c代码,table.c及其它源码看不到,编译sqlite3的makefile文件中gcc是有参数-g的。

[ 本帖最后由 asdfbbs 于 2008-8-12 08:34 编辑 ]
 楼主| 发表于 2008-8-10 15:54:37 | 显示全部楼层
该问题我曾经向 ksh 老兄请教过,当时老兄建议我用gdb调试,由于前段时间忙于工作,没时间弄,这个周末我已经搞了将近两天了,尝试了很多方法(我能做到的),搜索了无数网页,没有答案,还请大家多帮忙啊。
回复

使用道具 举报

 楼主| 发表于 2008-8-10 15:56:14 | 显示全部楼层
再附上我在skyeye下运行sqlite3的结果

/tmp/work/4.1.1-2.3.2/sqlite3/bin $ ./sqlite3
SQLite version 3.6.1
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
Illegal instruction
/tmp/work/4.1.1-2.3.2/sqlite3/bin $
回复

使用道具 举报

 楼主| 发表于 2008-8-10 16:00:58 | 显示全部楼层
我将我编译的skyeye, vmlinux, sqlite3都传上来,哪位高人帮我分析分析,万分感谢。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

发表于 2008-8-12 19:57:02 | 显示全部楼层
文件系统有问题吧,用这个试试

[ 本帖最后由 duzhig 于 2008-8-12 20:01 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
回复

使用道具 举报

 楼主| 发表于 2008-8-13 15:17:22 | 显示全部楼层
谢谢回复!
我试过了,你给的文件系统里的sqlite3运行时,.tables命令报错:PIDxx failed 4. 就退出到shell下了。由于无法mount到主机NFS的目录,没有试我自己编译出来的sqlite3。

如果是跟文件系统有关的话,我回去再好好研究一下文件系统,我现在为了省事,直接用的skyeye-testsuite-1.2.5中linux/s3c2410/s3c2410x-2.6.14/initrd.img,没有自己制作文件系统,回头我自己作个文件系统试试。

[ 本帖最后由 asdfbbs 于 2008-8-13 16:17 编辑 ]
回复

使用道具 举报

 楼主| 发表于 2008-8-17 12:48:44 | 显示全部楼层
还是不行啊
我自己制作了ramdisk文件系统,用busybox1.10.4版本,还是一样报Illegal instruction

[ 本帖最后由 asdfbbs 于 2008-8-17 12:50 编辑 ]
回复

使用道具 举报

发表于 2008-8-17 15:55:22 | 显示全部楼层
我用上面的文件系统是没有问题的,你的sqlite是动态连接的要注意动态链接库
回复

使用道具 举报

 楼主| 发表于 2008-8-17 19:44:24 | 显示全部楼层
请说的具体一点好吗,我初涉嵌入式linux,有很多东西还不太懂,sqlite3的动态库不就是libsqlite3.so.0.8.6吗,这个需要注意什么呢?我用你给的5Msqlite.img是提示 failed 4,我干脆把运行时整个信息发上来,请帮我看看。

Your elf file is little endian.
arch: arm
cpu info: armv4, arm920t, 41009200, ff00fff0, 2
mach info: name s3c2410x, mach_init addr 0x806b5d0
ethmod num=1, mac addr=0:4:3:2:1:f, hostip=10.0.0.1
uart_mod:0, desc_in:, desc_out:, converter:
SKYEYE: use arm920t mmu ops
Loaded RAM   ./5Msqlite.img
start addr is set to 0xc0008000 by exec file.
Linux version 2.6.14 (dong@dong-laptop) (gcc version 3.4.1) #0 Sun Jul 27 10:20:10 CST 2008
CPU: ARM920Tid(wb) [41009200] revision 0 (ARMvundefined/unknown)
Machine: SMDK2410
Warning: bad configuration page, trying to continue
Memory policy: ECC disabled, Data cache writeback
CPU S3C2410 (id 0x32410000)
S3C2410: core 62.400 MHz, memory 62.400 MHz, peripheral 62.400 MHz
S3C2410 Clocks, (c) 2004 Simtec Electronics
CLOCK: Slow mode (1.500 MHz), fast, MPLL on, UPLL on
CPU0: D VIVT write-back cache
CPU0: I cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
CPU0: D cache: 16384 bytes, associativity 64, 32 byte lines, 8 sets
Built 1 zonelists
Kernel command line: mem=32M console=ttySAC0 root=/dev/ram initrd=0xC0800000,0x00800000 ramdisk_size=8291 rw
PID hash table entries: 256 (order: 8, 4096 bytes)
timer tcon=00000000, tcnt cb1f, tcfg 00000200,00000000, usec 0000189e
Console: colour dummy device 80x30
Dentry cache hash table entries: 8192 (order: 3, 32768 bytes)
Inode-cache hash table entries: 4096 (order: 2, 16384 bytes)
Memory: 32MB = 32MB total
Memory: 22284KB available (1505K code, 277K data, 92K init)
Mount-cache hash table entries: 512
CPU: Testing write buffer coherency: ok
checking if image is initramfs...it isn't (bad gzip magic numbers); looks like an initrd
softlockup thread 0 started up.
Freeing initrd memory: 8192K
NET: Registered protocol family 16
S3C2410: Initialising architecture
Console: switching to colour frame buffer device 80x25
fb0: Virtual frame buffer device, using 1024K of video memory
s3c2410_serial0 at MMIO 0x50000000 (irq = 70) is a S3C2410
s3c2410_serial1 at MMIO 0x50004000 (irq = 73) is a S3C2410
s3c2410_serial2 at MMIO 0x50008000 (irq = 76) is a S3C2410
io scheduler noop registered
io scheduler anticipatory registered
io scheduler deadline registered
io scheduler cfq registered
RAMDISK driver initialized: 16 RAM disks of 8291K size 1024 blocksize
Cirrus Logic CS8900A driver for Linux (Modified for SMDK2410)
eth0: CS8900A rev D at 0xe0000300 irq=53, no eeprom , addr: 08: 0:3E:26:0A:5B
mice: PS/2 mouse device common for all mice
NET: Registered protocol family 2
IP route cache hash table entries: 512 (order: -1, 2048 bytes)
TCP established hash table entries: 2048 (order: 1, 8192 bytes)
TCP bind hash table entries: 2048 (order: 1, 8192 bytes)
TCP: Hash tables configured (established 2048 bind 204
TCP reno registered
TCP bic registered
NET: Registered protocol family 1
RAMDISK: ext2 filesystem found at block 0
RAMDISK: Loading 5120KiB [1 disk] into ram disk... done.
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 92K
Shell invoked to run file: /bin/init
Command: #!/bin/sh
Command: /bin/sh

Sash command shell (version 1.1.1)
/> ls
bin
dev
etc
lib
lost+found
sbin
usr
/> sqlite3
SQLite version 3.6.1
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .tables
pid 16: failed 4
/>
回复

使用道具 举报

发表于 2008-8-19 20:20:46 | 显示全部楼层
我这里也这样可能是sqlite交叉编译的问题,不太熟悉应用软件
回复

使用道具 举报

 楼主| 发表于 2008-8-22 12:38:39 | 显示全部楼层
这下可怎么办啊,我真没办法了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-22 20:06 , Processed in 0.213202 second(s), 17 queries .

© 2021 Powered by Discuz! X3.5.

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