这段代码为什么会出错?

vcf_reader 2014-08-02 10:16:12
用QT建立一个工程,在PC上运行没有问题
但是在Android设备上有问题。
将下列代码屏蔽后就没问题了
 
//在 Android 设备上不能运行的代码
//其中 sCaption 是 QString 类型的数组,B00~B22是一些按钮;它们事先都有定义
//下列代码的本意是随机设置按钮显示的字符
qint16 i = qrand();
qint16 x[9];

i = i%9;
x[0] = i;
ui.B00->setText(sCaption[i]);
int j = 1;
while(j<9)
{
reCalcu:
i = qrand();
i = i%9;
for(int jj = 0;jj<j;jj++)
{
if(i == x[jj]) goto reCalcu;
}
x[j] = i;
if(i==0) nWhoIsBlank = j;

switch (j)
{
case 0:
ui.B00->setText(sCaption[i]);
break;
case 1:
ui.B01->setText(sCaption[i]);
break;
case 2:
ui.B02->setText(sCaption[i]);
break;
case 3:
ui.B10->setText(sCaption[i]);
break;
case 4:
ui.B11->setText(sCaption[i]);
break;
case 5:
ui.B12->setText(sCaption[i]);
break;
case 6:
ui.B20->setText(sCaption[i]);
break;
case 7:
ui.B21->setText(sCaption[i]);
break;
case 8:
ui.B22->setText(sCaption[i]);
break;
}
j++;
}


上述代码屏蔽之后(也就是不执行),顺利启动程序。但有下列告警
===告警===
启动远端进程。W/dalvikvm(22003): dvmFindClassByName rejecting 'org/qtproject/qt5/android/QtNativeInputConnection'
W/dalvikvm(22003): dvmFindClassByName rejecting 'org/qtproject/qt5/android/QtExtractedText'
E/dalvikvm(22003): GC_CONCURRENT freed 303K, 5% free 9384K/9799K, paused 4ms+1ms
E/dalvikvm(22003): GC_FOR_ALLOC freed 12K, 5% free 9375K/9799K, paused 3ms+5ms
I/dalvikvm-heap(22003): Grow heap (frag case) to 9.952MB for 783376-byte allocation
E/dalvikvm(22003): GC_CONCURRENT freed 0K, 5% free 10140K/10567K, paused 1ms+10ms
E/dalvikvm(22003): GC_EXPLICIT freed 36K, 5% free 10132K/10567K, paused 1ms+2ms
====================

界面上的按钮(B00~B22),可以正常工作,但也有下面的警告
======警告==== 其中所谓的 Bad file number 很是莫名其妙,因为这个程序根本不和文件打交道!!==
D/Input (22003): Couldn't open '/dev/touch' (No such file or directory)
D/Input (22003): tpd read x fail: Bad file number
D/Input (22003): tpd read y fail: Bad file number
===========

然后,强迫执行前面被屏蔽的代码后,出现下面的警告,程序崩溃并退出。
=====警告=====
F/libc (22003): Fatal signal 11 (SIGSEGV) at 0xa27230c9 (code=1)
========================

归纳几个问题:
1)上面在android上不能执行的代码,在PC没任何问题
2)程序与文件不打交道(没有输入输出),为什么有Bad file number之说?
...全文
263 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
土小土 2014-09-05
  • 打赏
  • 举报
回复
我也出现了这个代码的问题 楼主有找到是什么问题吗
vcf_reader 2014-08-05
  • 打赏
  • 举报
回复
这么快就沉了?
LeoHirasawa 2014-08-02
  • 打赏
  • 举报
回复
学习了ing~~
彩阳 2014-08-02
  • 打赏
  • 举报
回复
以调试状态运行,看看发生段错误的时候,程序指向了何处,调用堆栈在哪里。这里光看也的不出结论的。
vcf_reader 2014-08-02
  • 打赏
  • 举报
回复
在模拟器上执行,当强迫执行上述被屏蔽的代码之后,出现这样的告警: F/libc ( 643): Fatal signal 11 (SIGSEGV) at 0x00000004 (code=1) 然后,程序崩溃退出。 为什么两者的告警信息也不同?

16,212

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧