答:不能防不胜防:
换个问题:谈谈你段错误理解,
如果是回答 core,非法地址, 说明还是处于青铜阶段,这是定义, 根本不知道背后和如何解决你没有回答。被套路了
很多book提到,但是我根本联想,关联不起来,当时一片空白。
答:自定义信号处理函数。2个信号不能捕获。
#include <iostream>
#include <signal.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
using namespace std;
void segfault_sigaction(int signal, siginfo_t *si, void *arg)
{
printf("Caught segfault at address %p\n", si->si_addr);
exit(0);
}
int main()
{
struct sigaction sa;
memset(&sa, 0, sizeof(struct sigaction));
sigemptyset(&sa.sa_mask);
sa.sa_sigaction = segfault_sigaction;
sa.sa_flags = SA_SIGINFO;
//sigaction(SIGSEGV, &sa, NULL); //Segmentation fault
sigaction(SIGSEGV, &sa, NULL); //Caught segfault at address (nil)
try
{
int *x = 0;
*x = 1234;
}
catch(...)
{
cout << "How to catch segmentation fault in Linux? no";
}
return 0;
}
塔山:
每次问自己一下:
一、这个技术出现的背景、初衷和要达到什么样的目标或是要解决什么样的问题
二、这个技术的优势和劣势分别是什么
三、这个技术适用的场景。任何技术都有其适用的场景,离开了这个场景
四、技术的组成部分和关键点。
五、技术的底层原理和关键实现
六、已有的实现和它之间的对比