Никак не вижу решения своей задачи.
Есть софт на C, он компилится и в зашифрованном виде работает у клиента на сервере.
Иногда софт падает и зачастую эти ситуации возникают редко и в особых условиях.
Тогда нужно отдебажить софт на сервере клиента, естественно исходники туда нести нельзя.
gcc -g использовать нежелательно, но даже с ним gdbserver + gdb на локальной машине помогает не всегда. Что уж говорить о core — он даёт ещё меньше информации.
Самый топорный и надёжный способ поиска проблемы в коде, это поиск строки после которой исполнение кода прекращается.
ВОПРОС: каким инструментом добавить в C код в каждую строку метку "такая-то строка исполнилась". Чтобы таким образом записать во внутреннюю структуру с очередью последние N номеров строк, которая и будет сбрасываться в файл debug.log в момент SIGSERV.
Или у GCC есть что-то стандартное для этих целей ?