Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Во, почесал репу и придумал, как должно быть: 14.08.09 08:13 Число просмотров: 2654
Автор: Zef <Alloo Zef> Статус: Elderman
|
Каждая документированная ф-ция, способная при кривых аргументах породить эксепшн, сразу после вызова заполняет специальную структуру, в которой указывает свой ординал и копирует туда вершину стека с адресом возврата и аргументами. Согласись, процедура, не накладная даже для 386. Теперь обработчик ексепшна, буде таковой возникнет, получает по ординалу функции ее имя и список имен переменных и аккуратно на синечке печатает "Ф-ция такая-то, с такими-то аргументами, вызванная 3д пати кодом по адресу такому то вызвала ексепшн такой-то". Добавить флажок, который устанавливается, если ф-ция вызывалась не из 3д пати кода (ф-ция перед вызовом другой ф-ции его устанавливает, 3д пати код - нет) и если флаг установлен - ф-ция вышеупомянутую структуру не трогает. Таким @$разом, имеем всегда указатель на 3д пати код, породивший ошибку.
И, вообще, какого @#$а в Интеллоидах 4 кольца защиты и сегменты с контролем переполнения?! Собсно, ядро должно фунциклировать в 0м кольце, дрова - в 1м, длл-ки общего пользования - во 2м, а юзеркод - в 3м. Вся аллокация памяти должна быть тока в сегментах, а того, кто в ядре разместит буфер в стеке следует вешать за гениталии.
Для мелкомягких рот разинули, так нет - лезут через %опу, а потом обижаются, что все в говне!
|
|
|