вопрос такой
вот есть такой фокус подсмотренный в ps2dev.org
// Sort of hack to install exception handler under USER THREAD
__attribute__((constructor)) void handlerInit()
{
pspKernelSetKernelPC();
pspDebugInstallErrorHandler(MyExceptionHandler);
}
void MyExceptionHandler(PspDebugRegBlock *regs)
{
pspDebugScreenInit();
pspDebugScreenSetBackColor(0x00FF0000);
pspDebugScreenSetTextColor(0xFFFFFFFF);
pspDebugScreenClear();
pspDebugScreenPrintf("I regret to inform you your psp has just crashed\n");
pspDebugScreenPrintf("Please contact Sony technical support for further information\n\n");
pspDebugScreenPrintf("Exception Details:\n");
pspDebugDumpException(regs);
DumpRegsToLog(regs);
//DumpDebugProfilerPrint();
sceKernelExitGame();
}
можно ли каким-то способом сразу вывести еще и строку и имя файла, где произошел exeption ?
Чуда не бывает :-)
Но... у нас есть адрес возникновения исключения, используя этот адрес можно по map-файлу (если нет отладочной информации), либо пропарсив elf-файл с отладочной информацией найти имя файла и строку :-)
вобщемто так сейчас и происходит...но это ....как бы помягче достает - да ))
типа так
psp-objdump -S $(TARGET).elf >> $(TARGET).s
потом там и ковыряю по адресу - правда не сказал бы что вот супер удобно ))
http://const.kiev.ua/photo/dump.jpg
Одно из достижений нашей секретной лаборатории.
Особенно внимательно смотреть нижнюю часть экрана :)
Имя функции, файла и прочая прочая - это да, надо мап-файл парсить и разбираться. Будет время - тож сделаем :)
const
ну если у вас уже есть колл стек - можно же и параметры запоминать - а то просто вызовы ф-ций не особо помогут
bada
Хех, параметры запоминать - это совсем не легко, а коллстек нужен больше не для того, чтобы контекст восстановить, а чтобы понять - "как мы сюда попали" :)
Тема в архиве.