C ++程序崩溃并出现分段错误。我们在堆栈上使用了一些非常大的数组,我们需要启用中型mcmodel。 我正在使用g ++ 5.4,当我操作应用程序时,它打印出错误。请告知如何调试。
<template>
<table id="example1" class="table table-bordered table-striped">
<thead>
<tr>
<th>Username</th>
<th>Email</th>
<th>Name</th>
</tr>
</thead>
<tbody>
<User is="user" v-for="user in users" v-bind:user="user"></User>
</tbody>
</table>
</template>
<script>
import User from './User.vue';
export default{
data(){
return {
users:[]
}
},
components:{User},
created(){
this.fetchUsers();
},
methods:{
fetchUsers(){
this.$http.get('api/users').then(response =>{
this.users = response.data.users;
});
}
},
}
</script>
========================================================
<template>
<tr>
<td> {{ user.username }}</td>
<td> {{ user.email }}</td>
<td> {{ user.name }}</td>
</tr>
</template>
<script type="text/x-template">
export default{
props:['user']
}
</script>
粘贴可执行文件的readelf输出 readelf -l app
strace ./app
execve("./app", ["./app"], [/* 65 vars */]) = -1 ENOMEM (Cannot allocate memory)
--- SIGSEGV {si_signo=SIGSEGV, si_code=SI_KERNEL, si_addr=0} ---
+++ killed by SIGSEGV +++
Segmentation fault (core dumped)
内核版本: Linux rk-VirtualBox 4.4.0-64-lowlatency#85-Ubuntu SMP PREEMPT 2月20日星期二12:39:25 UTC 2017 x86_64 x86_64 x86_64 GNU / Linux
答案 0 :(得分:0)
您显示的strace
输出表明内核拒绝启动您的程序(不执行程序的单个指令)。
内核只是说:“这个可执行文件的构建方式使我无法运行它。”
readelf -l ./app
的输出和确切的内核版本可以帮助进一步诊断。
<强>更新强>
第二个LOAD
细分:
LOAD 0x000000000074dc50 0x0000000000d4dc50 0x0000000000d4dc50
0x00000000000aafe0 0x00000041bf407a08 RW 200000
要求内核分配(mmap
)0x41bf407a08
个字节。这几乎是263GiB。您的计算机没有那么多内存,或者ulimit -v
和ulimit -d
设置得太低,或两者兼而有之。