首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocos2d-x Android NDK调试错误(9):文件描述符不正确?

Cocos2d-x Android NDK调试错误(9):文件描述符不正确?
EN

Stack Overflow用户
提问于 2014-06-28 13:23:18
回答 1查看 863关注 0票数 0

当我使用Cocos2d-x开发安卓应用程序时,系统崩溃了。所以我使用的是ndk-stack,我得到了这个错误:

代码语言:javascript
复制
D:\Android\android-ndk-r8e>adb logcat | ndk-stack.exe -sym e:\graduation_project
\cocos2d-x-2.1.5\projects\Test_py\proj.android\obj\local\armeabi\
********** Crash dump: **********
Build fingerprint: 'google/mysid/toro:4.2.2/JDQ39/573038:user/release-keys'
pid: 9911, tid: 9950, name: Thread-1096  >>> com.einverne.test_py <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr ff7a8390
Stack frame #00  pc 0001055e  /system/lib/libc.so (dlmalloc+1729): Unable to ope
n symbol file e:\graduation_project\cocos2d-x-2.1.5\projects\Test_py\proj.androi
d\obj\local\armeabi\/libc.so. Error (9): Bad file descriptor
Stack frame #01  pc 0000dcc7  /system/lib/libc.so (malloc+10): Unable to open sy
mbol file e:\graduation_project\cocos2d-x-2.1.5\projects\Test_py\proj.android\ob
j\local\armeabi\/libc.so. Error (9): Bad file descriptor
Stack frame #02  pc 002a4bff  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (cocos2d::unzOpenCurrentFile3(void*, int*, int*, int, char const*)+482): Rou
tine unzOpenCurrentFile3 in e:\graduation_project\cocos2d-x-2.1.5/cocos2dx/suppo
rt/zip_support/unzip.cpp:1494
Stack frame #03  pc 002a4d9f  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (cocos2d::unzOpenCurrentFile(void*)+10): Routine unzOpenCurrentFile in e:\gr
aduation_project\cocos2d-x-2.1.5/cocos2dx/support/zip_support/unzip.cpp:1677
Stack frame #04  pc 002a302d  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (cocos2d::ZipFile::getFileData(std::string const&, unsigned long*)+76): Rout
ine getFileData in e:\graduation_project\cocos2d-x-2.1.5/cocos2dx/support/zip_su
pport/ZipUtils.cpp:556
Stack frame #05  pc 002943c5  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (cocos2d::CCFileUtilsAndroid::getFileData(char const*, char const*, unsigned
 long*)+76): Routine getFileData in e:\graduation_project\cocos2d-x-2.1.5/cocos2
dx/platform/android/CCFileUtilsAndroid.cpp:126
Stack frame #06  pc 00173267  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (CLuaScriptReader::RunScriptFile(char const*, char*, char*)+46): Routine Run
ScriptFile in jni/../../Classes/LuaScriptReader.cpp:318
Stack frame #07  pc 00172129  /data/app-lib/com.einverne.test_py-1/libcocos2dcpp
.so (JudgeManager::getResult(std::string, std::string, CharacterEntity*, std::st
ring)+200): Routine getResult in jni/../../Classes/JudgeManager.cpp:51

当我回到我的代码时。

代码语言:javascript
复制
bool CLuaScriptReader::RunScriptFile(const char *filename,char* ret_string,char *name){
    if( m_plua == NULL || ret_string == NULL || filename == NULL ) return false;
#if CC_TARGET_PLATFORM == CC_PLATFORM_WIN32
    char filebuff[MAX_LUA_FILE_LEN] = "";
    char line[1024] = "";
    FILE* fpFile = fopen(filename,"r");
    if( fpFile == NULL ) {
        printf("can not find file %s\n",filename);
        return false;
    }
    while( fgets(line, 1024, fpFile) != NULL) {
        strcat(filebuff,line);
    }
    fclose(fpFile);
    RunScriptBuffer(filebuff,ret_string,name);
#endif
#if CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID
    unsigned long int size = 0;
    unsigned char* filebuff = CCFileUtils::sharedFileUtils()->getFileData(filename,"r",&size);
    CCString* ccStr = CCString::createWithData(filebuff,size);
    RunScriptBuffer(ccStr->getCString(),ret_string,name);
#endif
    return true;
}

该行出错:

代码语言:javascript
复制
unsigned char* filebuff = CCFileUtils::sharedFileUtils()->getFileData(filename,"r",&size);

然而,我总是使用这段代码来读取Android下的文件。可以在here中找到CLuaScriptReader

EN

回答 1

Stack Overflow用户

发布于 2014-06-30 14:47:39

你是如何编译这些文件的?

这似乎是脚本的一个问题。这几行代码:

代码语言:javascript
复制
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr ff7a8390
Stack frame #00  pc 0001055e  /system/lib/libc.so (dlmalloc+1729): Unable to ope
n symbol file e:\graduation_project\cocos2d-x-2.1.5\projects\Test_py\proj.androi
d\obj\local\armeabi\/libc.so. Error (9): Bad file descriptor

信号11 -->内存发生故障,路径将不会通向任何地方。/表示UNIX系统中的路径,\表示到WINDOWS系统的路径,因此查找libc.so是有问题的

错误的文件描述符是linux,如果您在尝试访问文件时收到此错误消息,最突出的原因是文件系统损坏或磁盘块损坏。在这种情况下,你也会得到写错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24463907

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档