Autor Beitrag
alzaimar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2889
Erhaltene Danke: 13

W2000, XP
D6E, BDS2006A, DevExpress
BeitragVerfasst: Do 06.11.08 16:35 
user profile iconhazard999 hat folgendes geschrieben Zum zitierten Posting springen:
Aber selbst in meinen Demos heißt keine Unit "Unit20"
Wird nicht viel mit dem Fehler zu tun haben.

_________________
Na denn, dann. Bis dann, denn.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Do 06.11.08 16:57 
Joa - sorry 4 that. Das mit den Unit-Namen ist wirklich unschön.

Leider kann ich mit einem Stack-Trace nicht viel anfangen.

Meinst Du das hier?...

... Zur Info: Ich habe in das Projekt selbst eine kleine Debug-Fuktion eingebaut, welche einfach in eine TXT an bestimmten Stellen im Quellcode schreibt, wo sich das Programm gerade "befindet":
Unit1.TForm1.UPdebug('Unit 25 - bis line 240'); ==>> Schreibt in die TXT den String: 'Unit 25 - bis line 240'.

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
cpu registers:
eax = 0268f6a8
ebx = 0269d66c
ecx = 00000000
edx = 0045e4f3
esi = 00c3a074
edi = ffffffff
eip = 0045e4f3
esp = 0012f20c
ebp = 0012f274

stack dump:
0012f20c  f3 e4 45 00 de fa ed 0e - 01 00 00 00 07 00 00 00  ..E.............
0012f21c  20 f2 12 00 f3 e4 45 00 - a8 f6 68 02 6c d6 69 02  ......E...h.l.i.
0012f22c  74 a0 c3 00 ff ff ff ff - 74 f2 12 00 3c f2 12 00  t.......t...<...
0012f23c  48 f2 12 00 18 39 40 00 - 74 f2 12 00 80 f2 12 00  H....9@.t.......
0012f24c  07 3a 40 00 74 f2 12 00 - 6c d6 69 02 00 87 01 00  .:@.t...l.i.....
0012f25c  00 87 01 00 ac f8 68 02 - 00 00 00 00 74 a0 c3 00  ......h.....t...
0012f26c  0b e2 45 00 00 87 01 01 - 9c f2 12 00 5f 1d 50 00  ..E........._.P.
0012f27c  ff ff 00 00 a4 f2 12 00 - 18 39 40 00 9c f2 12 00  .........9@.....
0012f28c  80 f5 12 00 10 13 50 00 - 00 87 01 00 00 00 00 00  ......P.........
0012f29c  c0 f2 12 00 d2 e2 45 00 - c8 f2 12 00 18 39 40 00  ......E......9@.
0012f2ac  c0 f2 12 00 ac f8 68 02 - 90 f7 68 02 00 00 00 00  ......h...h.....
0012f2bc  10 f0 69 02 e4 f2 12 00 - 6d 9c 46 00 f0 f2 12 00  ..i.....m.F.....
0012f2cc  18 39 40 00 e4 f2 12 00 - 90 f7 68 02 98 44 b6 00  .9@.......h..D..
0012f2dc  00 87 01 00 10 f0 69 02 - 20 f3 12 00 a9 98 46 00  ......i.......F.
0012f2ec  58 28 50 00 38 f3 12 00 - 18 39 40 00 20 f3 12 00  X(P.8....9@.....
0012f2fc  80 f5 12 00 68 f8 68 02 - 98 44 b6 00 21 91 46 00  ....h.h..D..!.F.
0012f30c  80 f5 12 00 68 f8 68 02 - 7c 00 00 00 cc 66 b6 00  ....h.h.|....f..
0012f31c  80 00 00 00 2c f3 12 00 - 4f 48 50 00 e0 cc c2 00  ....,...OHP.....
0012f32c  6c f3 12 00 cf b8 51 00 - f7 b8 51 00 80 f3 12 00  l.....Q...Q.....
0012f33c  18 39 40 00 6c f3 12 00 - 98 44 b6 00 c8 f9 c2 00  .9@.l....D......

disassembling:
[...]
0053a725       mov     edx, $53a890           ; 'Unit 20 - bis line 131'
0053a72a       call    +$100e1 ($54a810)      ; Unit1.TForm1.UPdebug
0053a72f 132   mov     eax, [$55c7ec]
0053a734       mov     eax, [eax]
0053a736       mov     eax, [eax+$2c4]
0053a73c     > call    -$1ea51 ($51bcf0)      ; QuickRpt.TCustomQuickRep.Preview
0053a741 133   mov     eax, [$55c9b8]
0053a746       mov     eax, [eax]
0053a748       mov     edx, $53a8b0           ; 'Unit 20 - bis line 133'
0053a74d       call    +$100be ($54a810)      ; Unit1.TForm1.UPdebug
0053a752       xor     eax, eax
[...]

========================ODER=========================


cpu registers:
eax = 0301f5b0
ebx = 0301e464
ecx = 0301f5ac
edx = 0012f301
esi = 00000000
edi = 00000000
eip = 00000000
esp = 0012e8dc
ebp = 0012e8f0

stack dump:
0012e8dc  3f 32 40 00 9f 44 50 00 - 64 e4 01 03 41 48 50 00  ?2@..DP.d...AHP.
0012e8ec  00 00 00 00 84 f3 12 00 - cf b8 51 00 14 39 40 00  ..........Q..9@.
0012e8fc  2c e9 12 00 00 00 00 00 - 00 00 00 00 00 00 00 00  ,...............
0012e90c  bf 37 91 7c 14 ee 12 00 - 44 f3 12 00 24 ea 12 00  .7.|....D...$...
0012e91c  18 ea 12 00 44 f3 12 00 - 04 38 91 7c 44 f3 12 00  ....D....8.|D...
0012e92c  f4 ec 12 00 8b 37 91 7c - 14 ee 12 00 44 f3 12 00  .....7.|....D...
0012e93c  24 ea 12 00 18 ea 12 00 - f0 b8 51 00 01 00 00 00  $.........Q.....
0012e94c  14 ee 12 00 44 f3 12 00 - 48 7b 94 7c 14 ee 12 00  ....D...H{.|....
0012e95c  44 f3 12 00 24 ea 12 00 - 18 ea 12 00 f0 b8 51 00  D...$.........Q.
0012e96c  40 ed 12 00 00 00 00 00 - 00 00 00 00 62 00 73 00  @...........b.s.
0012e97c  70 00 6c 00 61 00 6e 00 - 65 00 72 00 20 00 28 00  p.l.a.n.e.r...(.
0012e98c  77 00 77 00 77 00 2e 00 - 75 00 72 00 6c 00 61 00  w.w.w...u.r.l.a.
0012e99c  75 00 62 00 2d 00 66 00 - 65 00 72 00 69 00 65 00  u.b.-.f.e.r.i.e.
0012e9ac  6e 00 2d 00 70 00 6c 00 - 61 00 6e 00 75 00 6e 00  n.-.p.l.a.n.u.n.
0012e9bc  67 00 2e 00 64 00 65 00 - 29 00 00 00 01 00 00 00  g...d.e.).......
0012e9cc  30 ea 12 00 fc 84 36 7e - e0 cc f8 02 00 00 00 00  0.....6~........
0012e9dc  01 00 00 00 e4 04 00 00 - 00 00 00 00 01 00 00 00  ................
0012e9ec  00 00 00 00 10 0c 21 01 - f8 e9 12 00 30 00 6f 00  ......!.....0.o.
0012e9fc  67 00 65 00 6c 00 f6 00 - 66 00 65 00 72 00 00 00  g.e.l...f.e.r...
0012ea0c  09 00 00 00 80 84 f7 00 - 12 b4 38 7e cd ab ba dc  ..........8~....

disassembling:
[...]
00530d24 240   mov     eax, [$55c9b8]
00530d29       mov     eax, [eax]
00530d2b       mov     edx, $530db8           ; 'Unit 25 - bis line 240'
00530d30       call    +$19adb ($54a810)      ; Unit1.TForm1.UPdebug
00530d35 241   mov     eax, [ebx+$2c4]
00530d3b     > call    -$150d8 ($51bc68)      ; QuickRpt.TCustomQuickRep.Prepare
00530d40 242   mov     eax, [ebx+$2c4]
00530d46       mov     eax, [eax+$294]
00530d4c       mov     [$55f4f0], eax
00530d51 243   push    $530dd8                ; ' von '
00530d56       lea     edx, [ebp-8]
[...]
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Do 06.11.08 19:36 
Das was Du mit den Sachen UPdebug gemacht hast, steht in ähnlicher Form auch im Stacktrace drin. Dort wird einfach die Stelle angegeben, zu der zurückgesprungen wird, wenn man mit einer Subroutine fertig ist. Damit kann man das für einzelnen Routinen recht genau beschreiben, wie man zu der Fehlerstelle hinkommt.

Wichtig ist hierbei aber, dass wie von mir gesagt, die Fehlerstelle nicht zwingend der letzte Eintrag im Call Stack sein muss. Hier hilft es oftmals, einige Variablen wie Referenzen auf Objekte oder Variablen-Inhalte, die als Parameter übergeben werden, auf gewisse Rahmenbedingungen hin überprüft.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Fr 07.11.08 17:47 
okay. und wie kann ich jetzt weiter vorgehen?
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Fr 07.11.08 20:25 
An den im Stacktrace genannten Stellen Breakpoints setzen und im Einzelschritt durchdebuggen. Delphi bietet u.a. auch einen Remote-Debugger an, den Du für solche Dinge nutzen kannst.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Sa 08.11.08 15:23 
Bei mir läuft alles einwandfrei und keine Exception wird ausgelöst :-((( Alles Fehlerfrei.
Kann dies ggf. an einem Druckertreiber liegen?
Ich habe jetzt einmal QuickReport von 3.0.3 auf 3.0.5 geupdatet. Könnte das helfen?

Leider finde ich in dem Debug-Menü nur "TD32-Tasten" und kein "TD32-Debug-Infos".

In D4 Standard kann man Remote Debuggen? Gibts da ne HowTo?
juppinger Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 50



BeitragVerfasst: Sa 05.09.09 22:21 
So... nun mal die Antowort für die Ursache und die Lösung zur Behebung des Fehlers:

Mit den nicht so einfach zu bekommenden Delphi-Updates
d4supd2 & d4supd3, ging es dann einwandfrei.

Also Delphi updaten, da wird der quickreport (qreport) auch direkt mit upgedatet.

Problem war:
-------------------------------
Der alte (auf der Delphi4 Original-CD mitgelieferte) QuickReport kommt von Hause aus mit den seit einer Windows-Version bestehenden überlangen Pfadangaben für Verzeichnisse/Ordner nicht klar. Startet dann ein Anwender eine mit der "alten" QReport-Version compilierte Applikation, so ist der Windows-Standard-Pfad für den Temporären-Ordner (Tmp/Temp) auf einen Pfad gesetzt, der mit unter extrem lang ist (siehe Systemeigenschaften -> Erweitert -> Umgebungsvariablen). Das Update fixt das Problem.