Номер строки библиотеки кода JEDI для исключения

У меня есть проект построения кода C ++, и я добавил библиотеку JCL, чтобы получить дамп стека при возникновении исключения. Я получаю дамп стека, но не хватает самого важного - номера строки, в которой на самом деле произошло исключение. Я получаю имя функции, но если функция состоит из 30 строк, нелегко догадаться, в чем проблема.

Я что-то упустил?


person Community    schedule 20.02.2010    source источник
comment
Да, у меня такой же опыт. Было бы неплохо решить эту проблему.   -  person Roland Bengtsson    schedule 13.11.2010


Ответы (1)


Я исследую его дальше, и он работает для меня, по крайней мере, сейчас, используя Delphi 2007. Я думаю, что он работает таким же образом для C ++ Builder.

Я предполагаю, что вы не проверили информацию об отладке, а также «Использовать отладочные DCU» в параметрах компилятора. Я пробовал включенный пример в JCL, который скомпилирован с помощью Delphi examples \ windows \ debug \ stacktrack \ StackTrackDemoMain.pas.

Вот пример вывода:

[0047C478]{StackTrackExample.exe} StackTrackDemoMain.TMainForm.Button1Click (Line 49, "StackTrackDemoMain.pas")
[00442590]{StackTrackExample.exe} Controls.TControl.Click (Line 5229, "Controls.pas")
[00446083]{StackTrackExample.exe} Controls.TWinControl.WndProc (Line 7304, "Controls.pas")
[0042ECB8]{StackTrackExample.exe} StdCtrls.TButtonControl.WndProc (Line 3684, "StdCtrls.pas")
[004461D3]{StackTrackExample.exe} Controls.DoControlMsg (Line 7353, "Controls.pas")
[00446083]{StackTrackExample.exe} Controls.TWinControl.WndProc (Line 7304, "Controls.pas")
[004577A3]{StackTrackExample.exe} Forms.TCustomForm.WndProc (Line 3512, "Forms.pas")
[004457AC]{StackTrackExample.exe} Controls.TWinControl.MainWndProc (Line 7073, "Controls.pas")
[0041EC14]{StackTrackExample.exe} Classes.StdWndProc (Line 11583, "common\Classes.pas")
[0044617F]{StackTrackExample.exe} Controls.TWinControl.DefaultHandler (Line 7334, "Controls.pas")
[00446083]{StackTrackExample.exe} Controls.TWinControl.WndProc (Line 7304, "Controls.pas")
[0042ECB8]{StackTrackExample.exe} StdCtrls.TButtonControl.WndProc (Line 3684, "StdCtrls.pas")
[0041EC14]{StackTrackExample.exe} Classes.StdWndProc (Line 11583, "common\Classes.pas")

ПРИМЕЧАНИЕ. Я изменил в файле StackTrackDemoMain.pas метод TMainForm.ApplicationEventsException

to

JclLastExceptStackListToStrings(ExceptionLogMemo.Lines, True, False, False, False);

Удачи!

person Roland Bengtsson    schedule 13.11.2010