![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
andriano |
![]()
Сообщение
#1
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
program Project1; 1. Хочется получить на экран диагностику с указанием строки, в которой произошла ошибка. Например так, как это делает ТМТ: Код RunError #200 (division by zero) Calls stack: ERRORTMT.A [ERRORTMT.PAS(10) at 00000009] ERRORTMT.B [ERRORTMT.PAS(15) at 0000000A] ERRORTMT.ERRORTMT [ERRORTMT.PAS(21) at 0000000A] Return code: 4 Execution time: 0.06 seconds Press any key... 2.Хочется самому получить доступ к отладочной информации. Например, получить в подпрограмме название вызывающей программы. |
![]() ![]() |
andriano |
![]()
Сообщение
#2
|
Гуру ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 168 Пол: Мужской Реальное имя: Сергей Андрианов Репутация: ![]() ![]() ![]() |
Дело в том, что подавляющее число компиляторов сами составляют такие таблицы и на их основе осуществляют вывод посмертного дампа. Над изготовлением такой таблицы ручками я, разумеется, думал, но эта идея мне не понравлась.
В ТМТ, собственно, я при необходимости получить название вызывающей подпрограммы добываю ее из этой формируемой компилятором таблицы. Хотелось бы иметь возможность делать то же самое из Дельфи. Подключать дизассемблер - и мысли такой не было. Не нужно это. Ладно, "копать" в сторону SetUnhandledExceptionFilter я попробую, но, честно говоря, не верится, что такая функция как посмертный дамп может отсутствовать в мало-мальски серьезном крмпиляторе. Неужели в Дельфях это так? Другое дело, что в любом компиляторе эта функция подключается только при компиляции в отладочном режиме и отключена в основном. Может и Дельфи здесь все-таки следуют стандарту de facto, и эту функцию можно как-то включить? |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 20:25 |