的Andr​​oid NDK分割错误错误、Andr、oid、NDK

2023-09-07 13:11:40 作者:弃世于不顾 o

在我的应用程序,当我尝试打印我的日志文件到那个时候面临分割错误。

我现在面临致命的信号11。

我的日志功能是为母语的一部分,我从Java的说法。

logcat的:

  01-01 00:09:38.968:A / libc的(3905):在0xdeadbaad致命的信号11(SIGSEGV)(code = 1)
01-01 00:09:38.976:D /随机(2185):在旅行名单:假的
01-01 00:09:38.976:D /随机(2185):里程表:0
01-01 00:09:38.976:D / ABC(3905):满足了WIFI搜索定时pre确认条件
01-01 00:09:39.601:I / DEBUG(1285):*** *** *** *** *** *** *** *** *** *** *** * ** *** *** *** ***
01-01 00:09:39.601:I / DEBUG(1285):建立指纹:机器人:机器人:4.0.4 / IMM76I / eng.example.20120608.074924:ENG /测试键
01-01 00:09:39.601:I / DEBUG(1285):PID:3905,TID:3908>>> com.demo.abc<<<
01-01 00:09:39.601:I / DEBUG(1285):11(SIGSEGV),code 1(SEGV_MAPERR),故障地址deadbaad
01-01 00:09:39.601:I / DEBUG(1285):R0,R1 00000000 00000027 R2 00000048 R3 00000000
01-01 00:09:39.601:I / DEBUG(1285):R4 00000000 R5 100ffadc R6 00000000 R7 00000000
01-01 00:09:39.601:I / DEBUG(1285):R8 016b5760 R9 00000048 10 100ffc98 FP 00006b8b
01-01 00:09:39.601:I / DEBUG(1285):IP fffc25c4 SP 100ffad8 LR deadbaad PC 4008ffd8 CPSR 60000130
01-01 00:09:39.601:I / DEBUG(1285):D0 0000000000000000 0000000000000000 D1
01-01 00:09:39.601:I / DEBUG(1285):D2 D3 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D4 0000000000000000 0000000000000000 D5
01-01 00:09:39.601:I / DEBUG(1285):D6 D7 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D8 0000000000000000 0000000000000000 D9
01-01 00:09:39.601:I / DEBUG(1285):D10 D11 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D12 D13 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D14 D15 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D16 0000000000000000 0000000000000000 D17
01-01 00:09:39.601:I / DEBUG(1285):D18 D19 0000000000000000 0000000421d12176
01-01 00:09:39.601:I / DEBUG(1285):D20 0000008000000080 0000000000000000 D21
01-01 00:09:39.601:I / DEBUG(1285):D22 3fb0f4a31edab38b D23 3fede16b9c24a98f
01-01 00:09:39.601:I / DEBUG(1285):D24 3e66376972bea4d0 D25 00000000ffffffff
01-01 00:09:39.601:I / DEBUG(1285):D26 D27 0000000000000000 3fc554e7eb0eb47c
01-01 00:09:39.601:I / DEBUG(1285):D28 D29 0000000000000000 0000000000000000
01-01 00:09:39.601:I / DEBUG(1285):D30 0000000000000000 0000000000000000 D31
01-01 00:09:39.601:I / DEBUG(1285):SCR 80000012
01-01 00:09:39.882:I / DEBUG(1285):#00件00017fd8 /system/lib/libc.so
01-01 00:09:39.882:I / DEBUG(1285):#01件000096c2 /system/lib/libcutils.so(mspace_merge_objects)
01-01 00:09:39.882:I / DEBUG(1285):围绕PC code:
01-01 00:09:39.882:I / DEBUG(1285):4008ffb8 b13cb942 b1196821 6809460c d1fb2900 B.< H ... FH)..!
01-01 00:09:39.882:I / DEBUG(1285):!4008ffc8 b31b6963 2eadf64b f6cd2127 24006ead ci..K ............ N $
01-01 00:09:39.882:I / DEBUG(1285):4008ffd8 1000f88e e812f7f4 f7f52106 a902e8b0 ......... ......
01-01 00:09:39.882:I / DEBUG(1285):4008ffe8 5380f04f 2006460a 94029304 f7f49403 O..SF ........
01-01 00:09:39.882:I / DEBUG(1285):4008fff8 4622ec6c 20024629 ec74f7f4 effef7f3 LF)为..t .....
01-01 00:09:39.882:I / DEBUG(1285):约LR code:
01-01 00:09:39.882:I / DEBUG(1285):deadba8c FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
01-01 00:09:39.882:I / DEBUG(1285):deadba9c FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
01-01 00:09:39.882:I / DEBUG(1285):deadbaac FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
01-01 00:09:39.882:I / DEBUG(1285):deadbabc FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
01-01 00:09:39.882:I / DEBUG(1285):deadbacc FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF ................
01-01 00:09:39.882:I / DEBUG(1285):约地址deadbaad内存映射:
01-01 00:09:39.882:I / DEBUG(1285):be9ba000-be9db000 [堆栈]
01-01 00:09:39.882:I / DEBUG(1285):(没有地图的地址)
01-01 00:09:39.882:I / DEBUG(1285):FFFF0000-ffff1000 [载体]
01-01 00:09:39.882:I / DEBUG(1285):堆栈:
01-01 00:09:39.882:I / DEBUG(1285):100ffa98 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffa9c 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffaa0 00000048
01-01 00:09:39.882:I / DEBUG(1285):100ffaa4 018b1d10 [堆]
01-01 00:09:39.882:I / DEBUG(1285):100ffaa8 00000048
01-01 00:09:39.882:I / DEBUG(1285):100ffaac 40092bcd /system/lib/libc.so
01-01 00:09:39.882:I / DEBUG(1285):100ffab0 400d18b4
01-01 00:09:39.882:I / DEBUG(1285):100ffab4 0000000d
01-01 00:09:39.882:I / DEBUG(1285):100ffab8 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffabc 40094167 /system/lib/libc.so
01-01 00:09:39.882:I / DEBUG(1285):100ffac0 40131000
01-01 00:09:39.882:I / DEBUG(1285):100ffac4 100ffadc
01-01 00:09:39.882:I / DEBUG(1285):100ffac8 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffacc 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffad0 df0027ad
01-01 00:09:39.882:I / DEBUG(1285):100ffad4 00000000
01-01 00:09:39.882:I / DEBUG(1285):#00 100ffad8 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffadc fffffbdf
01-01 00:09:39.882:I / DEBUG(1285):100ffae0 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffae4 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffae8 00000000
01-01 00:09:39.882:I / DEBUG(1285):100ffaec 00000000
01-01 00:09:39.890:I / DEBUG(1285):100ffaf0 00000000
01-01 00:09:39.890:I / DEBUG(1285):100ffaf4 411d0010的/ dev / ashmem / Dalvik的堆(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffaf8 41227b88的/ dev / ashmem / Dalvik的堆(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffafc 400e46c5 /system/lib/libcutils.so
01-01 00:09:39.890:I / DEBUG(1285):#01 100ffb00 00000000
01-01 00:09:39.890:I / DEBUG(1285):100ffb04 400e46c5 /system/lib/libcutils.so
01-01 00:09:39.890:I / DEBUG(1285):100ffb08 40000110
01-01 00:09:39.890:I / DEBUG(1285):100ffb0c 00000b4c
01-01 00:09:39.890:I / DEBUG(1285):100ffb10 411d0018的/ dev / ashmem / Dalvik的堆(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffb14 00000001
01-01 00:09:39.890:I / DEBUG(1285):100ffb18 409cec68 /system/lib/libdvm.so
01-01 00:09:39.890:I / DEBUG(1285):100ffb1c 40986c37 /system/lib/libdvm.so
01-01 00:09:39.890:I / DEBUG(1285):100ffb20 00000061
01-01 00:09:39.890:I / DEBUG(1285):100ffb24 41226d08的/ dev / ashmem / Dalvik的堆(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffb28 016b5748 [堆]
01-01 00:09:39.890:I / DEBUG(1285):100ffb2c 41227a08的/ dev / ashmem / Dalvik的堆(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffb30 00000000
01-01 00:09:39.890:I / DEBUG(1285):100ffb34 100ffdd4
01-01 00:09:39.890:I / DEBUG(1285):100ffb38 00000061
01-01 00:09:39.890:I / DEBUG(1285):100ffb3c 5109be98的/ dev / ashmem / Dalvik的位图-2(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffb40 50c4fe98的/ dev / ashmem / Dalvik的位图-1(删除)
01-01 00:09:39.890:I / DEBUG(1285):100ffb44 000074f6
01-01 00:09:42.085:I / BootReceiver(1427):复制/数据/墓碑/ tombstone_01到DropBox的(SYSTEM_TOMBSTONE)
 

本地部分code:

 无效printDebugLog(字符* MODULENAME,字符*记录,...)
{
    焦炭的LogMessage [光程]
    焦炭tempString [光程]

    的printf(\ nprintDebugLog:1);
    // FP为空,文件未打开。
    va_list的参数列表的;
    的printf(\ nprintDebugLog:2);
    的va_start(arglist中,日志);
    的printf(\ nprintDebugLog:3);
    vsnprintf(tempString,1048,日志,参数列表的);
    的printf(\ nprintDebugLog:4);
    的strcpy(的LogMessage,APPNAME);
    的printf(\ nprintDebugLog:5);
    strcat的(的LogMessage,DEBUG);
    的printf(\ nprintDebugLog:6);
    strcat的(的LogMessage[);
    的printf(\ nprintDebugLog:7);
    strcat的(的LogMessage,时间戳());
    的printf(\ nprintDebugLog:8);
    strcat的(的LogMessage] [);
    的printf(\ nprintDebugLog:9);
    strcat的(的LogMessage,模块名);
    的printf(\ nprintDebugLog:10);
    的strcat(的LogMessage,]);
    的printf(\ nprintDebugLog:11);
    strcat的(的LogMessage,tempString);

    va_end用来(参数列表的);


#如果定义(CONSOLE_LOG)

    的printf(\ t%S \ N的LogMessage);
#ENDIF

    如果(g_logFileDesc!= NULL)
    {

        如果(g_debug)
        {

            //检查文件大小。
            / *如果(getFileSize(g_logFileDesc)> = MAX_LOG_FILE_SIZE)
            {

                closeLogFile();
                openLogFile();

            }
            如果(fprintf中(g_logFileDesc,%S \ N的LogMessage)!=(strlen的(的LogMessage)+ 1))
            {

                的printf(\ n文件删除队列\ N起始);
                removeUploadQueue();

            } * /

        }

    }
}
 

请让我知道,如果你想关于这更code。

在等待你的回答......

解决方案

 字符的LogMessage [5];
炭tempString [5];

的strcpy(的LogMessage,1234);
的strcpy(tempString,1234);

strcat的(的LogMessage,tempString);
 

可能(!)引起的麻烦?

In my application when I try to print my logs into file at that Time facing Segmentation Error .

I am facing Fatal Signal 11 .

My log function is into Native part , I called it from Java .

Logcat:

01-01 00:09:38.968: A/libc(3905): Fatal signal 11 (SIGSEGV) at 0xdeadbaad (code=1)
01-01 00:09:38.976: D/Random(2185): Trip In List :false
01-01 00:09:38.976: D/Random(2185): Odometer :0
01-01 00:09:38.976: D/abc(3905): PreCheck conditions satisfied for WIFI Searching Timer
01-01 00:09:39.601: I/DEBUG(1285): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-01 00:09:39.601: I/DEBUG(1285): Build fingerprint: 'android:android:4.0.4/IMM76I/eng.example.20120608.074924:eng/test-keys'
01-01 00:09:39.601: I/DEBUG(1285): pid: 3905, tid: 3908  >>> com.demo.abc <<<
01-01 00:09:39.601: I/DEBUG(1285): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr deadbaad
01-01 00:09:39.601: I/DEBUG(1285):  r0 00000000  r1 00000027  r2 00000048  r3 00000000
01-01 00:09:39.601: I/DEBUG(1285):  r4 00000000  r5 100ffadc  r6 00000000  r7 00000000
01-01 00:09:39.601: I/DEBUG(1285):  r8 016b5760  r9 00000048  10 100ffc98  fp 00006b8b
01-01 00:09:39.601: I/DEBUG(1285):  ip fffc25c4  sp 100ffad8  lr deadbaad  pc 4008ffd8  cpsr 60000130
01-01 00:09:39.601: I/DEBUG(1285):  d0  0000000000000000  d1  0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d2  0000000000000000  d3  0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d4  0000000000000000  d5  0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d6  0000000000000000  d7  0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d8  0000000000000000  d9  0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d10 0000000000000000  d11 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d12 0000000000000000  d13 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d14 0000000000000000  d15 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d16 0000000000000000  d17 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d18 0000000000000000  d19 0000000421d12176
01-01 00:09:39.601: I/DEBUG(1285):  d20 0000008000000080  d21 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d22 3fb0f4a31edab38b  d23 3fede16b9c24a98f
01-01 00:09:39.601: I/DEBUG(1285):  d24 3e66376972bea4d0  d25 00000000ffffffff
01-01 00:09:39.601: I/DEBUG(1285):  d26 0000000000000000  d27 3fc554e7eb0eb47c
01-01 00:09:39.601: I/DEBUG(1285):  d28 0000000000000000  d29 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  d30 0000000000000000  d31 0000000000000000
01-01 00:09:39.601: I/DEBUG(1285):  scr 80000012
01-01 00:09:39.882: I/DEBUG(1285):          #00  pc 00017fd8  /system/lib/libc.so
01-01 00:09:39.882: I/DEBUG(1285):          #01  pc 000096c2  /system/lib/libcutils.so (mspace_merge_objects)
01-01 00:09:39.882: I/DEBUG(1285): code around pc:
01-01 00:09:39.882: I/DEBUG(1285): 4008ffb8 b13cb942 b1196821 6809460c d1fb2900  B.<.!h...F.h.)..
01-01 00:09:39.882: I/DEBUG(1285): 4008ffc8 b31b6963 2eadf64b f6cd2127 24006ead  ci..K...'!...n.$
01-01 00:09:39.882: I/DEBUG(1285): 4008ffd8 1000f88e e812f7f4 f7f52106 a902e8b0  .........!......
01-01 00:09:39.882: I/DEBUG(1285): 4008ffe8 5380f04f 2006460a 94029304 f7f49403  O..S.F. ........
01-01 00:09:39.882: I/DEBUG(1285): 4008fff8 4622ec6c 20024629 ec74f7f4 effef7f3  l."F)F. ..t.....
01-01 00:09:39.882: I/DEBUG(1285): code around lr:
01-01 00:09:39.882: I/DEBUG(1285): deadba8c ffffffff ffffffff ffffffff ffffffff  ................
01-01 00:09:39.882: I/DEBUG(1285): deadba9c ffffffff ffffffff ffffffff ffffffff  ................
01-01 00:09:39.882: I/DEBUG(1285): deadbaac ffffffff ffffffff ffffffff ffffffff  ................
01-01 00:09:39.882: I/DEBUG(1285): deadbabc ffffffff ffffffff ffffffff ffffffff  ................
01-01 00:09:39.882: I/DEBUG(1285): deadbacc ffffffff ffffffff ffffffff ffffffff  ................
01-01 00:09:39.882: I/DEBUG(1285): memory map around addr deadbaad:
01-01 00:09:39.882: I/DEBUG(1285): be9ba000-be9db000 [stack]
01-01 00:09:39.882: I/DEBUG(1285): (no map for address)
01-01 00:09:39.882: I/DEBUG(1285): ffff0000-ffff1000 [vectors]
01-01 00:09:39.882: I/DEBUG(1285): stack:
01-01 00:09:39.882: I/DEBUG(1285):     100ffa98  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffa9c  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffaa0  00000048  
01-01 00:09:39.882: I/DEBUG(1285):     100ffaa4  018b1d10  [heap]
01-01 00:09:39.882: I/DEBUG(1285):     100ffaa8  00000048  
01-01 00:09:39.882: I/DEBUG(1285):     100ffaac  40092bcd  /system/lib/libc.so
01-01 00:09:39.882: I/DEBUG(1285):     100ffab0  400d18b4  
01-01 00:09:39.882: I/DEBUG(1285):     100ffab4  0000000d  
01-01 00:09:39.882: I/DEBUG(1285):     100ffab8  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffabc  40094167  /system/lib/libc.so
01-01 00:09:39.882: I/DEBUG(1285):     100ffac0  40131000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffac4  100ffadc  
01-01 00:09:39.882: I/DEBUG(1285):     100ffac8  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffacc  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffad0  df0027ad  
01-01 00:09:39.882: I/DEBUG(1285):     100ffad4  00000000  
01-01 00:09:39.882: I/DEBUG(1285): #00 100ffad8  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffadc  fffffbdf  
01-01 00:09:39.882: I/DEBUG(1285):     100ffae0  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffae4  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffae8  00000000  
01-01 00:09:39.882: I/DEBUG(1285):     100ffaec  00000000  
01-01 00:09:39.890: I/DEBUG(1285):     100ffaf0  00000000  
01-01 00:09:39.890: I/DEBUG(1285):     100ffaf4  411d0010  /dev/ashmem/dalvik-heap (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffaf8  41227b88  /dev/ashmem/dalvik-heap (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffafc  400e46c5  /system/lib/libcutils.so
01-01 00:09:39.890: I/DEBUG(1285): #01 100ffb00  00000000  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb04  400e46c5  /system/lib/libcutils.so
01-01 00:09:39.890: I/DEBUG(1285):     100ffb08  40000110  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb0c  00000b4c  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb10  411d0018  /dev/ashmem/dalvik-heap (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffb14  00000001  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb18  409cec68  /system/lib/libdvm.so
01-01 00:09:39.890: I/DEBUG(1285):     100ffb1c  40986c37  /system/lib/libdvm.so
01-01 00:09:39.890: I/DEBUG(1285):     100ffb20  00000061  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb24  41226d08  /dev/ashmem/dalvik-heap (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffb28  016b5748  [heap]
01-01 00:09:39.890: I/DEBUG(1285):     100ffb2c  41227a08  /dev/ashmem/dalvik-heap (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffb30  00000000  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb34  100ffdd4  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb38  00000061  
01-01 00:09:39.890: I/DEBUG(1285):     100ffb3c  5109be98  /dev/ashmem/dalvik-bitmap-2 (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffb40  50c4fe98  /dev/ashmem/dalvik-bitmap-1 (deleted)
01-01 00:09:39.890: I/DEBUG(1285):     100ffb44  000074f6  
01-01 00:09:42.085: I/BootReceiver(1427): Copying /data/tombstones/tombstone_01 to DropBox (SYSTEM_TOMBSTONE)

Native Part Code :

void printDebugLog(char *moduleName, char *log, ...)
{
    char logMessage[PATHLENGTH];
    char tempString[PATHLENGTH];

    printf("\nprintDebugLog : 1");
    //fp is null, file is not open.
    va_list arglist;
    printf("\nprintDebugLog : 2");
    va_start(arglist, log);
    printf("\nprintDebugLog : 3");
    vsnprintf(tempString, 1048, log, arglist);
    printf("\nprintDebugLog : 4");
    strcpy(logMessage, APPNAME);
    printf("\nprintDebugLog : 5");
    strcat(logMessage, DEBUG);
    printf("\nprintDebugLog : 6");
    strcat(logMessage, "[");
    printf("\nprintDebugLog : 7");
    strcat(logMessage, timestamp());
    printf("\nprintDebugLog : 8");
    strcat(logMessage, "][");
    printf("\nprintDebugLog : 9");
    strcat(logMessage, moduleName);
    printf("\nprintDebugLog : 10");
    strcat(logMessage, "] ");
    printf("\nprintDebugLog : 11");
    strcat(logMessage, tempString);

    va_end(arglist);


#if defined(CONSOLE_LOG)

    printf("\t%s\n", logMessage);
#endif

    if (g_logFileDesc != NULL)
    {

        if (g_debug)
        {

            //Check File Size.
            /*if (getFileSize(g_logFileDesc) >= MAX_LOG_FILE_SIZE)
            {

                closeLogFile();
                openLogFile();

            }
            if (fprintf(g_logFileDesc, "%s\n", logMessage) != (strlen(logMessage) + 1))
            {

                printf("\nFile Delete start from Queue \n");
                removeUploadQueue();

            }*/

        }

    }
}

Please let me know if you want more code regarding this.

waiting for your answer....

解决方案

char logMessage[5];
char tempString[5];

strcpy(logMessage, "1234");
strcpy(tempString, "1234");

strcat(logMessage, tempString);

may (!) cause the trouble?