есть ли где описание кодов ошибок?
вот Cause - 00000018 - это чего случилось?
Exception - Bus error (instr)
EPC - 0326C560
Cause - 00000018
Status - 20008603
BadVAddr - 00000000
zr:00000000 at:0008FF00 v0:089B08E0 v1:089B08E8
a0:09084300 a1:08B6EB90 a2:089B09C8 a3:00000150
t0:000000E0 t1:08B6E9C8 t2:089B0878 t3:089B0000
t4:882E9928 t5:00003E0C t6:889704A4 t7:00008600
s0:08F78234 s1:09082290 s2:090A9B50 s3:090A95D8
s4:090A95C0 s5:08AE6488 s6:08AE6484 s7:DEADBEEF
t8:00000000 t9:0890B010 k0:00000000 k1:00000000
gp:089B8F10 sp:882E9938 fp:882E99E0 ra:089020DC
Хрен разберешь. Стандарный алгоритм такой.
1) Ловишь interrupt.
2) Делаешь dump своего ELF модуля.
3) Ищешь по offset код в дампе.
4) Находишь этот код в своих исходниках и правишь.
Но как минимум 90% собственных ошибок правятся в обход этих операций с thinking и логированию на стеке входов-выходов.
Сделать dump можно с cygwin. Вечером могу вспомнить как, если интересно.
По строке "BadVAddr - 00000000" предполагаю, что была попытка доступа по NULL pointer.
neteraser
интересно
Димка
самое смешное что игра себе работает, а потом я случаем заметил что залогирована ошибка- и никаких критических вылетов...шутка ли - доступ по нулевому поинтеру....откудава - хз
bada
Вспомни о treads :)
У тебя в потоке может возникнуть exception, но другие при этом работают.
Это нормально для PSP , там оооочень хороший thread managment
bada
Возможно, статья http://www.dtf.ru/articles/read.php?id=37058 (переложенная под PSP, естественно), поможет что-то прояснить :)
bada
psp-objdump -S game/game.prx >> game.s
И смотришь по offset.
neteraser
гм а я не юзал prx это нада лоадер к нему? что то к вам на свн попасть не могу(((
bada
> гм а я не юзал prx это нада лоадер к нему? что то к вам на свн попасть не могу(((
1) для psp-objdump - prx\elf все-равно, насколько я помню.
2) про SVN спроси KVaks или const.
neteraser
я вобщем как написал makefile где делается pbp и патч 1.50 , так больше и не прикосался к нему....а тут какието prx и elf и там говорят много интересного, а я и не знал o.0
тоесть я из elf вытаскиваю дамп и смотрю по оффсет где прокол...так что ли?
тоесть строка
psp_strip test.elf -o test_strip.elf
вырезает из test.elf в test_strip.elf все недебагное, а в test.elf осталась вся дебагная инфа? а в pbp идет
test_strip.elf , я правильно понимаю?
bada
смотри комментарии к статье "Hello world"
Padawan
я их и смотрел, вот спрашиваю правильноли я их понял?
bada
Про psp-strip ты не совсем правильно понял. Она вообще может тебе любую секцию вырезать, если ты об этом попросишь. Но в данном случае она патчит (видимо убирает оттуда какие-то адреса) relocation tables в твоем исходном elf (они там в конце) и напрочь срезает debug symbols. Я не вникал в то что именно она там изменяет, но в принципе не обязательно ею вообще пользоваться.
так по какому оффсету смотреть в данном случае ???
тоесть при дизасме в какой адрес нужно пальцем ткнуть?
Тема в архиве.