Як в delphi дізнатися останню сходинку свого коду, в якому виникло виключення stack overflow на

У деяких випадках при виникненні помилок, під час налагодження, компілятор показує рядок дельфових бібліотек, де саме виникло виключення. Наприклад звернення до неіснуючого індексу масивів та інших контейнерів, як тут:

Отримаємо вказівку на рядок: Error (@SListIndexError, Index); в System.Classes

У великих багатопоточних проектах відловити подібні помилки через трасування буває вкрай складно, записувати лог після кожного рядка - теж не варіант. А хотілося б знати рядок свого проекту від куди це все почалося. Як небудь можна виявити шуканий рядок в режимі налагодження?

заданий 28 Березня о 21:02

Щоб дізнатися звідки прийшла помилка, потрібно подивитися на стек викликів (він же Call Stack). У режимі налагодження в IDE цей стек завжди доступний і "останній рядок свого коду" визначається елементарно. Більш того, в момент виключення в багатопотоковому додатку, можна подивитися в якому конкретному місці знаходиться кожен з потоків і як він в це місце потрапив. Якщо ж вас цікавить питання отримання стека не з відладчика. а маючи на руках тільки скомпільований exe. то тут на допомогу приходять зазначені вище інструменти (EurekaLog, MadExcept, etc.). - zed 29 Березня о 6:30

@HeathRow звичайно порожній, він почне "працювати" коли додаток зупиниться в якій-небудь крапці. Тому що до постановки додатки на паузу сенсу в налагоджувальних вікнах немає - паралельно працює кілька потоків, у кожного з яких свій активний Callstack. Сам Callstack покаже послідовність викликів поточного потоку в результаті брейкпоінта, F4, виникнення виключення. Перемикання між потоками з відображенням стека кожного - через вікно Thread Status - kami 29 Березня о 9:00