我在linux和android上的调试经验有限。我已经移植了一个在Android上运行的C ++应用程序。有很多线程(大约15个),我将它们的堆栈大小设置为16384.当我运行二进制文件时,它会随机崩溃。从堆栈跟踪来看,它没有多大意义。有时它会在localtime_t内崩溃。
我注意到SP周围的区域都是FFFFFFFF。是一些堆栈损坏。或者我超过了堆。关于如何调试它的任何指针。我怀疑内存泄漏不会导致此类问题。
I/DEBUG ( 80): r0 42b4c358 r1 00000000 r2 00000000 r3 00000000
I/DEBUG ( 80): r4 42b24008 r5 00000000 r6 42b241d0 r7 41820d90
I/DEBUG ( 80): r8 40020cc9 r9 41819000 sl 42b241d4 fp 401b62ec
I/DEBUG ( 80): ip 42b241d0 sp 41816d40 lr 40046387 pc 40046396 cpsr 60010030
I/DEBUG ( 80): d0 323320657a697320 d1 6b63617473207465
I/DEBUG ( 80): d2 6568635320646165 d3 7963696c6f502064
I/DEBUG ( 80): d4 0000000000000000 d5 0000000000000000
I/DEBUG ( 80): d6 0000000000000000 d7 bd6bc8e300000000
I/DEBUG ( 80): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 80): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 80): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 80): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 80): d16 41ca6a16232db22d d17 3f50624dd2f1a9fc
I/DEBUG ( 80): d18 41b315d6d5000000 d19 0000000000000000
I/DEBUG ( 80): d20 0000000000000000 d21 0000000000000000
I/DEBUG ( 80): d22 0000000000000000 d23 0000000000000000
I/DEBUG ( 80): d24 0000000000000000 d25 0000000000000000
I/DEBUG ( 80): d26 0000000000000000 d27 0000000000000000
I/DEBUG ( 80): d28 0000000000000000 d29 0000000000000000
I/DEBUG ( 80): d30 0000000000000000 d31 0000000000000000
I/DEBUG ( 80): scr 00000010
I/DEBUG ( 80):
I/DEBUG ( 80): backtrace:
I/DEBUG ( 80): #00 pc 00034396
I/DEBUG ( 80): #01 pc 0000ecdd
I/DEBUG ( 80): #02 pc 0000d228
I/DEBUG ( 80): #03 pc 0000d3c0
I/DEBUG ( 80):
I/DEBUG ( 80): stack:
I/DEBUG ( 80): ........ ........
I/DEBUG ( 80): ........ ........
I/DEBUG ( 80): #01 41820da8 41820dd0
I/DEBUG ( 80): 41820dac 40020cc9
I/DEBUG ( 80): 41820db0 42b241d0
I/DEBUG ( 80): 41820db4 4017722c /system/lib/libc.so (__thread_entry+76)
I/DEBUG ( 80): #02 41820db8 42b241d0
I/DEBUG ( 80): 41820dbc 42c767d0
I/DEBUG ( 80): 41820dc0 41820dd0
I/DEBUG ( 80): 41820dc4 00000000
I/DEBUG ( 80): 41820dc8 00000078
I/DEBUG ( 80): 41820dcc 401773c4 /system/lib/libc.so (pthread_create+244)
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r0:
I/DEBUG ( 80): 42b4c338 00000000 00000000 00000000 00013fff
I/DEBUG ( 80): 42b4c348 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c358 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c368 000d8a6d 42182ed8 00000000 000000fe
I/DEBUG ( 80): 42b4c378 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c388 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c398 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3a8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3b8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3c8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3d8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3e8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c3f8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c408 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c418 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b4c428 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r4:
I/DEBUG ( 80): 42b23fe8 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 42b23ff8 ffffffff ffffffff 00000000 00028ff0
I/DEBUG ( 80): 42b24008 400539f4 400537ac 00000001 00000000
I/DEBUG ( 80): 42b24018 00000000 00000001 400537ac 00000001
I/DEBUG ( 80): 42b24028 00000000 00000000 42957d50 42957b78
I/DEBUG ( 80): 42b24038 42bec4e8 400539a8 00000000 400537ac
I/DEBUG ( 80): 42b24048 00000001 00000000 00000000 400537ac
I/DEBUG ( 80): 42b24058 00000001 00000000 00000000 00000000
I/DEBUG ( 80): 42b24068 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24078 00000000 400539a8 00000000 400537ac
I/DEBUG ( 80): 42b24088 00000001 00000000 00000000 400537ac
I/DEBUG ( 80): 42b24098 00000001 00000000 00000000 00000000
I/DEBUG ( 80): 42b240a8 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b240b8 00000000 400539a8 00000000 400537ac
I/DEBUG ( 80): 42b240c8 00000001 00000000 00000000 400537ac
I/DEBUG ( 80): 42b240d8 00000001 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r6:
I/DEBUG ( 80): 42b241b0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b241c0 00000000 00000000 00000000 429575f0
I/DEBUG ( 80): 42b241d0 400537bc 42c767d0 0000001e 6d454154
I/DEBUG ( 80): 42b241e0 00000075 00000000 00000000 00000000
I/DEBUG ( 80): 42b241f0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24200 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24210 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24220 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24230 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24240 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24250 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24260 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24270 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24280 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24290 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b242a0 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r7:
I/DEBUG ( 80): 41820d70 00000000 00000000 00000003 df52773d
I/DEBUG ( 80): 41820d80 00000000 42b241d0 42c767d0 40020cc9
I/DEBUG ( 80): 41820d90 41820db0 40020cc9 41819000 42b241d4
I/DEBUG ( 80): 41820da0 401b62ec 40020cdf 41820dd0 40020cc9
I/DEBUG ( 80): 41820db0 42b241d0 4017722c 42b241d0 42c767d0
I/DEBUG ( 80): 41820dc0 41820dd0 00000000 00000078 401773c4
I/DEBUG ( 80): 41820dd0 41820dd0 42c767d0 00000000 00000000
I/DEBUG ( 80): 41820de0 00000000 df52773d 00000000 00000000
I/DEBUG ( 80): 41820df0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e00 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e10 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e20 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e30 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e40 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e50 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41820e60 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r8:
I/DEBUG ( 80): 40020ca8 68096809 bf041a89 bdf0b007 eadef7f3
I/DEBUG ( 80): 40020cb8 000330be 0002d276 000330d8 00033064
I/DEBUG ( 80): 40020cc8 af02b5d0 b1d44604 1114f8d4 6820b909
I/DEBUG ( 80): 40020cd8 46206881 20004788 010cf884 011cf894
I/DEBUG ( 80): 40020ce8 6860b168 3fcdf1b0 f64fbf1e f6cf61ee
I/DEBUG ( 80): 40020cf8 428861ee 6820d003 46206841 20004788
I/DEBUG ( 80): 40020d08 0000bdd0 af02b5b0 4605b084 461c4824
I/DEBUG ( 80): 40020d18 447868bb 4f00f5b3 68006800 46289003
I/DEBUG ( 80): 40020d28 1114f8c5 bfb84611 4300f44f f7ff4622
I/DEBUG ( 80): 40020d38 2801ff7f 6868d126 aa02a901 ebe0f7f3
I/DEBUG ( 80): 40020d48 4818b9f0 9a014621 f7fc4478 4816fd79
I/DEBUG ( 80): 40020d58 9a024621 f7fc4478 68a8fd73 9002aa02
I/DEBUG ( 80): 40020d68 99016868 ebd2f7f3 f7f3b950 6800eb4c
I/DEBUG ( 80): 40020d78 ebd2f7f3 480d4602 44784621 fd60f7fc
I/DEBUG ( 80): 40020d88 e0022001 f8c52000 49090114 44799a03
I/DEBUG ( 80): 40020d98 68096809 bf041a89 bdb0b004 ea66f7f3
I/DEBUG ( 80):
I/DEBUG ( 80): memory near r9:
I/DEBUG ( 80): 41818fe0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41818ff0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41819000 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819010 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819020 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819030 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819040 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819050 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819060 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819070 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819080 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 41819090 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 418190a0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 418190b0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 418190c0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 418190d0 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near sl:
I/DEBUG ( 80): 42b241b4 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b241c4 00000000 00000000 429575f0 400537bc
I/DEBUG ( 80): 42b241d4 42c767d0 0000001e 6d454154 00000075
I/DEBUG ( 80): 42b241e4 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b241f4 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24204 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24214 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24224 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24234 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24244 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24254 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24264 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24274 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24284 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24294 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b242a4 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near fp:
I/DEBUG ( 80): 401b62cc 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b62dc 00000000 00000000 ffffffff 00000000
I/DEBUG ( 80): 401b62ec 00000000 00000001 0001ffff 00000000
I/DEBUG ( 80): 401b62fc 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b630c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b631c 00000000 00000000 4017cb05 4017cb01
I/DEBUG ( 80): 401b632c 4017d4b3 4017d5ed 00000000 00000000
I/DEBUG ( 80): 401b633c 00000000 00000000 4004776d 4019e861
I/DEBUG ( 80): 401b634c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b635c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b636c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b637c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b638c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b639c 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b63ac 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 401b63bc 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near ip:
I/DEBUG ( 80): 42b241b0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b241c0 00000000 00000000 00000000 429575f0
I/DEBUG ( 80): 42b241d0 400537bc 42c767d0 0000001e 6d454154
I/DEBUG ( 80): 42b241e0 00000075 00000000 00000000 00000000
I/DEBUG ( 80): 42b241f0 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24200 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24210 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24220 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24230 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24240 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24250 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24260 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24270 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24280 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b24290 00000000 00000000 00000000 00000000
I/DEBUG ( 80): 42b242a0 00000000 00000000 00000000 00000000
I/DEBUG ( 80):
I/DEBUG ( 80): memory near sp:
I/DEBUG ( 80): 41816d20 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d30 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d40 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d50 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d60 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d70 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d80 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816d90 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816da0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816db0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816dc0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816dd0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816de0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816df0 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816e00 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80): 41816e10 ffffffff ffffffff ffffffff ffffffff
I/DEBUG ( 80):
I/DEBUG ( 80): code around pc:
I/DEBUG ( 80): 40046374 447876e4 68006800 0c14f847 f7da4630
I/DEBUG ( 80): 40046384 2801fd3a 82e4f040 3020f504 f5002500
I/DEBUG ( 80): 40046394 90097054 3020f504 7052f500 f504900a
I/DEBUG ( 80): 400463a4 f50030a0 900c704c 30a0f504 794df500
I/DEBUG ( 80): 400463b4 70fff649 0a05eba0 eb00a80e f8d40b05
I/DEBUG ( 80): 400463c4 b3b801c4 69c96801 b3984788 f826f7d9
I/DEBUG ( 80): 400463d4 46594620 f7ff4652 4680fcc1 0f01f1b8
I/DEBUG ( 80): 400463e4 990cdb1c 0000f8d9 38016809 45401a40
I/DEBUG ( 80): 400463f4 f8d4dd11 b17001c4 69c96801 b1504788
I/DEBUG ( 80): 40046404 0108eb0b 0208ebaa f7ff4620 2800fca7
I/DEBUG ( 80): 40046414 4480bfc8 f1b8dce5 da160f01 0f00f1b8
I/DEBUG ( 80): 40046424 828df040 db0e2d01 0134f894 0f06f010
I/DEBUG ( 80): 40046434 e01bd003 f7d92032 4630f82d fcdbf7da
I/DEBUG ( 80): 40046444 d1bc2800 200ae284 4445e7f5 0800f04f
I/DEBUG ( 80): 40046454 46282d02 db10900b 0b38f10d f04f2000
I/DEBUG ( 80): 40046464 f04f0a01 25000c00 e0ac9008 4620a90e
I/DEBUG ( 80):
I/DEBUG ( 80): code around lr:
I/DEBUG ( 80): 40046364 f5adaf03 b0914d20 f8df4604 f5040604
I/DEBUG ( 80): 40046374 447876e4 68006800 0c14f847 f7da4630
I/DEBUG ( 80): 40046384 2801fd3a 82e4f040 3020f504 f5002500
I/DEBUG ( 80): 40046394 90097054 3020f504 7052f500 f504900a
I/DEBUG ( 80): 400463a4 f50030a0 900c704c 30a0f504 794df500
I/DEBUG ( 80): 400463b4 70fff649 0a05eba0 eb00a80e f8d40b05
I/DEBUG ( 80): 400463c4 b3b801c4 69c96801 b3984788 f826f7d9
I/DEBUG ( 80): 400463d4 46594620 f7ff4652 4680fcc1 0f01f1b8
I/DEBUG ( 80): 400463e4 990cdb1c 0000f8d9 38016809 45401a40
I/DEBUG ( 80): 400463f4 f8d4dd11 b17001c4 69c96801 b1504788
I/DEBUG ( 80): 40046404 0108eb0b 0208ebaa f7ff4620 2800fca7
I/DEBUG ( 80): 40046414 4480bfc8 f1b8dce5 da160f01 0f00f1b8
I/DEBUG ( 80): 40046424 828df040 db0e2d01 0134f894 0f06f010
I/DEBUG ( 80): 40046434 e01bd003 f7d92032 4630f82d fcdbf7da
I/DEBUG ( 80): 40046444 d1bc2800 200ae284 4445e7f5 0800f04f
I/DEBUG ( 80): 40046454 46282d02 db10900b 0b38f10d f04f2000
I/DEBUG ( 80):
I/DEBUG ( 80): memory map around fault addr 41816d64:
I/DEBUG ( 80): 41811000-41812000 rw-
I/DEBUG ( 80): (no map for address)
I/DEBUG ( 80): 41819000-4181a000 ---
I/BootReceiver( 376): Copying /data/tombstones/tombstone_04 to DropBox (SYSTEM_TOMBSTONE)
D/dalvikvm( 376): GC_CONCURRENT freed 330K, 9% free 6452K/7088K, paused 2ms+2ms, total 29ms
编辑:我将所有线程的堆栈大小更改为64k。该应用程序似乎运行了一段时间没有任何崩溃。我不确定这是否是问题,或者现在只是掩盖了实际问题。
我使用过内存占用少且rtos的设备。通常任务很小,最大可达16k的堆栈大小。这个特殊的应用程序非常大,具有较大的函数调用深度。建议的最佳堆栈大小是多少。
根据此链接默认似乎是2Mb https://unix.stackexchange.com/questions/127602/default-stack-size-for-pthreads