Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Как найти место возникновения ошибки


Автор: Stereo 2.5.2007, 00:13
Я использую Delphi 2006,

Если мое приложение генерирует ошибки вида:

Access violation at address 00429A72 in module 'Project1.exe'. Read of address 00000041

Как мне найти место возникновения ошибки именно по строке исключения?
Возможно как-то по другому стоит организовать лог файл чтоб оперативнее находить ошибки? 

Автор: Snowy 2.5.2007, 00:19
В исходном коде? Никак.
Ищи трассировкой или в CPU Window.

Автор: dumb 2.5.2007, 03:18
Цитата(Snowy @  2.5.2007,  00:19 Найти цитируемый пост)
В исходном коде? Никак.

если менее категорично, то можно, но сложно. если самому делать. нужно "пережевать" либо .map, либо файл с отладочной инфой и состряпать что-нибудь свое, чтоб покомпактнее. в обработчике исключений брать оттуда инфу(хотя можно лопатить напрямую непереработанную debug-info) и выдавать в сообщении/писать в файл/и то и другое вместе...

либо воспользоваться готовыми компонентами:
Цитата(Peter Below (TeamB))

Debugging helpers
 madExcept: http://www.madshi.net/
 Exceptional Magic: http://dimus.virtualave.net/
 Stack tracer published in Delphi Magazine: http://www.thedelphimagazine.com/disks/dmag50.zip
 JclDebug: http://delphi-jedi.org -> Code Library
 DJMDebug 0.5: http://www.murdoch-sutherland.com/programs
 EurekaLog: http://www.eurekalog.com


Добавлено через 1 минуту и 56 секунд
единственное, у некоторых из них могут возникнуть проблемы с 2006...

Автор: Alexeis 3.5.2007, 17:14
 А еще есть один замечательный способ работающий под дебагом. Вызвать окно Call Stack. Для этого нужно разрешить брейк во время исключения. В окошке Call Stack видно дерево вызов и можно увидеть по крайней мере процедуру в которой произошел эксепшн. 

Автор: Igor_thief 23.5.2007, 14:32
на сайте http://www.eurekalog.com/details.php сказано следующее:

EurekaLog only uses the compiled file, not the .MAP file.

Интересно, как они делают это без map файлов?

Автор: dumb 23.5.2007, 15:48
Цитата(Igor_thief @  23.5.2007,  14:32 Найти цитируемый пост)
EurekaLog only uses the compiled file, not the .MAP file.
Интересно, как они делают это без map файлов?

читают debug-info либо из .exe либо из отдельного файла, обрабатывают(выкидывают ненужное), сжимают и добавляют к .exe(родную debug-info, если она была в .exe, наверное грохают, ибо жирна)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)