Я реализую бэкэнд для JIT-компилятора JavaScript, который создает код x86.Иногда, в результате ошибок, я получаю ошибки сегментации.Может быть довольно сложно отследить, что их вызвало.Поэтому мне было интересно, есть ли какой-нибудь «простой» способ перехвата ошибок сегментации и других подобных сбоев и получения адреса инструкции, которая вызвала ошибку.Таким образом, я мог бы сопоставить адрес обратно скомпилированной сборкой x86 или даже обратно с исходным кодом.
Это должно работать в Linux, но в идеале в любой POSIX-совместимой системе.В худшем случае, если я не смогу поймать ошибку seg и получить IP-адрес в моем работающем JIT, я бы хотел иметь возможность перехватить его снаружи (журнал ядра?) И, возможно, просто получить от компилятора дамп большого файлас сопоставлением адресов с инструкциями, которые я мог бы сопоставить со скриптом Python или чем-то еще.
Любые идеи / предложения приветствуются.Не стесняйтесь делиться своими собственными советами по отладке, если вы когда-либо работали над собственным проектом компилятора.