所以我试图在aarch64(ARM 8)上运行我的c ++应用程序。 ***使用GDB运行时,应用程序运行没有任何问题。但是否则它会给我一个分段错误。***我检查了dmesg它就像
一样unhandled level 3 permission fault (11) at 0x004ac010, esr 0x8300000f
[241808.064733] pgd = ffffffc0fe270000
[241808.068270] [004ac010] *pgd=00000001615c9003, *pmd=000000016f316003, *pte=02e0000147f42f53
[241808.076813]
[241808.076824] CPU: 2 PID: 12503 Comm: Jumpi Not tainted 3.10.67-g3a5c467 #1
[241808.076832] task: ffffffc0fef9c080 ti: ffffffc0f0fe4000 task.ti: ffffffc0f0fe4000
[241808.076841] PC is at 0x4ac010
[241808.076846] LR is at 0x401cb8
[241808.076852] pc : [<00000000004ac010>] lr : [<0000000000401cb8>] pstate: 20000000
[241808.076857] sp : 0000007fc044b600
[241808.076863] x29: 0000007fc044b680 x28: 0000000000000000
[241808.076873] x27: 0000000000000000 x26: 0000000000000000
[241808.076882] x25: 00000000004186ec x24: 0000000000418634
我尝试在gdb中设置disable-randomization off但仍然没有错误。我然后尝试了valgrind。我收到很多错误消息,说明已经创建了unitialised值,主要是在dl_init_paths.But更重要的是我得到了一个错误的权限,在内存地址生成SISGEV,当我通过内存时似乎在(env_path_list)。 我在调试几个小时之后的位置。如果有人对下一步有任何建议/想法会有所帮助。 另一个有趣的事实是,使用交叉编译器编译相同的代码并在此上运行(ARM8)它工作正常...... !!
答案 0 :(得分:0)
你可以在'esr&#39;中找到错误的原因。注册已在崩溃转储中打印的文件。您可以使用armv8规范来解码&#39; esr&#39;注册