1、GDB调试
https://blog.csdn.net/21cnbao/article/details/7385161#commentBox
https://www.cnblogs.com/lsgxeva/p/8078670.html
2、coredump 查看程序异常崩溃时的状态
2.1开启coredump:
查看命令:【ulimit -c 】 查看当前终端是否开启 【输出0 未开启 ; 输出unlimited 已开启】
开启命令:【ulimit -c unlimited】 or 【ulimit -c 200】。设置core文件的大小
永久开启:修改配置文件 /etc/security/limits.conf
开启后,程序运行崩溃,在当前文件夹会出现core文件,保存了崩溃时的内存状态和寄存器状态。core文件也是一种ELF文件,可以使用【readelf命令查看】
2.2配合gdb查看core文件
命令【gdb ./program core 】。同时要求program程序GCC编译时使用-g选项 添加调试信息到执行文件。
2.3coredump文件产生的原因:
1、内存访问越界;2、多线程程序使用了线程不安全的函数;3、多线程读写数据未加保护锁;4、非法指针;5、堆栈溢出。