madExcept (
http://madshi.net/madExceptDescription.htm) kann detaillierte Callstacks der Absturzstelle erstellen, und ist für nichtkommerzielle Nutzung kostenlos ("free for non-commercial usage"). (und die kommerzielle Version ist nicht teuer)
In den Bugreport - Callstacks sieht man dann die Prozedurnamen und Zeilennummern, z.B.
Code:
executable : MadXSender.exe
exec. date/time : 2011-03-31 12:04
compiled with : Delphi 2009
madExcept version : 3.0m
callstack crc : $dda1fab7, $8adccffc, $8adccffc
exception number : 1
exception class : EInOutError
exception message : I/O error 6.
main thread ($388):
004b8ea9 +091 MadXSender.exe MainFrm 86 +10 TMainForm.DoRaise <-- in Zeile 86 ist es passiert
004b956d +031 MadXSender.exe MainFrm 184 +6 TMainForm.BtnRaiseClick
004957f3 +06f MadXSender.exe Controls TControl.Click
00483032 +01e MadXSender.exe StdCtrls TCustomButton.Click
00483aa0 +010 MadXSender.exe StdCtrls TCustomButton.CNCommand
...
Die Callstacks werden dann in einer Datei gespeichert, man kann sie aber auch über Mail oder HTTP an andere Stellen weiterleiten.
Alternativen sind: Remote Debugger, Logger
Hope this helps