logo
logo
а вот WinOrganizer ;) [HexPlorer 21/01/2004 23:12]
в нем перехватчик/обработчик ошибок встроенный в программу...
 
по всяким поводам выскакивал (в пре-релизах) и предлагал отправить лог файл разработчикам... в который он перед этим заботливо сохраня весь лог ошибок, добавляя по-одной в конец файла...
 
может и тут так сделать (только ногами не бейте за досужее предложение)
 
вот как выглядит их Error.log (тхт) файл - если влезет кусок
 
==============================15:42:12 18.07.2003==============================
Exception `EAccessViolation` in module WinOrganizer.exe at 0000349B
Access violation at address 0040449B in module `WinOrganizer.exe`. Read of address FFFFFFFF
 
Source file: UNKNOWN, Line UNKNOWN
 
Call stack:
:0040449B [WinOrganizer.exe]
:00518B77 [WinOrganizer.exe]
:008966F0 [WinOrganizer.exe]
:008C892F [WinOrganizer.exe]
:008C88FA [WinOrganizer.exe]
:0044C5CB [WinOrganizer.exe]
:0044C642 [WinOrganizer.exe]
:0044C6FE [WinOrganizer.exe]
:0058B0EC [WinOrganizer.exe]
:0044EB63 [WinOrganizer.exe]
:0043C126 [WinOrganizer.exe]
:77E3A244 [user32.dll]
:77E16B21 [user32.dll]
:77E24F4A [user32.dll]
:716F5DC1 [comctl32.dll]
:716F5CE0 [comctl32.dll]
:716F5D9F [comctl32.dll]
:717239A9 [comctl32.dll]
:716F5CE0 [comctl32.dll]
:716F5C00 [comctl32.dll]
:77E3A244 [user32.dll]
:77E145E5 [user32.dll]
:77E15B51 [user32.dll]
:008D5ABF [WinOrganizer.exe]
:77EA847C [kernel32.dll]
 
Registers:
EAX = 00000001  CS = 001B  EIP = 0040449B  Flags = 00010206
EBX = 023A8D34  SS = 0023  ESP = 0012FAF4    EBP = 0012FB0C
ECX = 00000000  DS = 0023  ESI = 00000001    FS  = 003B
 
Dervish: Ногами бить не будем. Но, на самом деле, смысла просто нет. Стандартного мини-дампа (адрес ошибки + регистры + два-три вызова из Call Stack) вместе с описанием когда и что случилось обычно бывает достаточно для того, чтобы найти ошибку.
 
Посмотрите, я вылавливаю ошибки просто зная место их возникновения и один(!) адрес из Call Stack... Зачем мне вся цепочка? Кстати, название файла и номер строки мне удобны только тем, что не надо лазить по map-файлу. А так, можно было бы обойтись и обычным адресом прерывания.
 
Кстати, если в процессе ошибки будет изменено значение регистра стека, то... То будет очень сложно получить столь подробный CallStack. Хотя, я понимаю разработчиков WinOrganizer-а, это очень приятно иметь такой список вызовов.