Programhiba keresés memóriacím alapján?
Ha egy program (Free Pascal-ban írt) hibával akad ki, akkor a hibát miképpen lehet megtalálni, ha nem "Runtime erro" módon íródik ki, hanem másképpen?
Amiről úgy gondoltam: "ott akad ki" azt {$i-} és "ioresult" közé tettem, de hiába.
Debugger nélkül is megoldható valahogyan a hiba forrásának megtalálása?
An unhandled exception occurred at $0001051C:
EAccessViolation: Access violation
$0001051C
An unhandled exception occurred at $0002BB9C:
EAccessViolation: Access violation
$0002BB9C
$00031DB8
$00032CBC
$00033228
Meg lehet(ne) nézni, de neked nem mondana sokat az amit ott találsz.
A programod egy kivételt generál ami nincs lekezelve, magyarán, nem irtad meg a hibát kezelő függvényt ott, ahol kellett volna.
Ha a forrást feltöltöd, akor tudok segíteni, de így nem.
Elméletileg igen... ha érted az Assemblyt, és pöpecül képben vagy az alacsony színtű dolgokban.
De sokkal egyszerűbb, és célravezetőbb a forrás segítsgével kilogikázni, hogy mi okoza a kivételt.
En ugy szoktak megtalalni hogy beleirok minden hova writeln-eket.
writeln('jo1');
writeln('jo2');
writeln('jo3');
writeln('jo4');
stb.
es akkor latom melyiknel akadt el
A kérdésben említett programkód azóta már nincs meg/megoldódott.
A hibakeresést én is csináltam így, csak volt amikor nem volt erőm ilyen módon", mert túl sok lett volna a következők irogatása:
{$i-}
if ioresult<>0 then writeln('hiba <szam>');
{$i+}
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!