Как узнать стек вызова?
От: Andyero  
Дата: 13.01.03 07:51
Оценка:
Как узнать стек вызова для вывода отладочной информации?
аналог java "printStackTrace();", желательно не только
для исключений, а для любого места в программе.
Re: Как узнать стек вызова?
От: Bolgaroff Казахстан  
Дата: 13.01.03 07:53
Оценка:
Здравствуйте, Andyero

Меню Delphi — View\Debug windows\Call stack (Ctrl+Alt+S)

Или я вопрос не понял?
Re[2]: Как узнать стек вызова?
От: Andyero  
Дата: 13.01.03 08:21
Оценка:
Здравствуйте, Bolgaroff, Вы писали:

B>Меню Delphi — View\Debug windows\Call stack (Ctrl+Alt+S)

B>Или я вопрос не понял?

Поняли, но неправильно...
В отладчике это просто, но мне нужно в коде для отладочной печати!
В логи, например, или в диалог об ошибке.
Пока знаю только способ узнать имя файла, функции и номер строки
непосредственно места вывода: __FILE__, __LINE__,__FUNC__

А вот полный стэк вызова непонятно как получить
Re[3]: Как узнать стек вызова?
От: Bolgaroff Казахстан  
Дата: 13.01.03 08:28
Оценка:
Здравствуйте, Andyero

A>А вот полный стэк вызова непонятно как получить


Теперь понял вопрос. Сейчас ответить не могу — нужно дома посмотреть исходники, кажется что-то было...
Если найду что-то — напишу
Re: Как узнать стек вызова?
От: Алексей Владимирович Миронов Россия  
Дата: 13.01.03 08:49
Оценка:
Здравствуйте, Andyero, Вы писали:

A>Как узнать стек вызова для вывода отладочной информации?

A>аналог java "printStackTrace();", желательно не только
A>для исключений, а для любого места в программе.

В проекте JEDI есть библиотека JCL (Jedi Class Library), а в ней классы, похожие на то, что Вам надо. Например:

TStackInfo = record
  CallerAdr: DWORD;
  Level: DWORD;
  CallersEBP: DWORD;
  DumpSize: DWORD;
  ParamSize: DWORD;
  ParamPtr: PDWORDArray;
  case Integer of
    0: (StackFrame: PStackFrame;);
    1: (DumpPtr: PByteArray;);
  end;


Правда, у меня что-то JEDI не открывается (connection timeout).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.